#####################
# source/exe_queue.py
#####################
import queue
################################################################################
class Pipe:
def __init__(self, obj):
self.__obj = obj
self.__queue = queue.Queue()
def __getattr__(self, name):
method = _Method(self.__queue, name)
setattr(self, name, method)
return method
def update(self):
while not self.__queue.empty():
name, args, kwargs = self.__queue.get()
getattr(self.__obj, name)(*args, **kwargs)
################################################################################
class _Method:
def __init__(self, queue, name):
self.__queue = queue
self.__name = name
def __call__(self, *args, **kwargs):
self.__queue.put((self.__name, args, kwargs))