30 lines
		
	
	
		
			799 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			799 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from eventlet import api
 | 
						|
 | 
						|
def get_ident():
 | 
						|
    return id(api.getcurrent())
 | 
						|
 | 
						|
 | 
						|
class local(object):
 | 
						|
 | 
						|
    def __init__(self):
 | 
						|
        self.__dict__['__objs'] = {}
 | 
						|
 | 
						|
    def __getattr__(self, attr, g=get_ident):
 | 
						|
        try:
 | 
						|
            return self.__dict__['__objs'][g()][attr]
 | 
						|
        except KeyError:
 | 
						|
            raise AttributeError(
 | 
						|
                "No variable %s defined for the thread %s"
 | 
						|
                % (attr, g()))
 | 
						|
 | 
						|
    def __setattr__(self, attr, value, g=get_ident):
 | 
						|
        self.__dict__['__objs'].setdefault(g(), {})[attr] = value
 | 
						|
 | 
						|
    def __delattr__(self, attr, g=get_ident):
 | 
						|
        try:
 | 
						|
            del self.__dict__['__objs'][g()][attr]
 | 
						|
        except KeyError:
 | 
						|
            raise AttributeError(
 | 
						|
                "No variable %s defined for thread %s"
 | 
						|
                % (attr, g()))
 |