我在开发一个用于返回用户函数的数据的标准时遇到了问题,这些用户函数在作为单独线程运行该函数的类中传递和执行。区分用户函数返回和包装类返回
目标是在用户请求时从函数传递返回参数。
但是,如果当用户从我的班级请求数据时功能没有完成运行会怎样?或者,如果函数失败,因此没有数据(但其失败不是关键的程序,这意味着引发异常是过度)
我曾想过只返回None,但如果用户函数返回None,那是什么有意义的(即功能成功完成)?我的下一个想法是在列表中返回函数输出,如果没有数据准备好或可用,则返回None。这意味着用户将不得不检查数据是否被返回(检查无或列表),我发现这些数据稍微不雅。
我很好奇,如果已经有这样的事情的标准,或者如果有人有一个更清洁的建议。
例如:
用户呼叫
def foo():
#...do lots of stuff that takes long time
# return whether stuff worked or not (None if worked False if not)
return success
takes_forever = detach(foo)
# ... do other things
# get data from detached function which has hopefully completed
are_you_done = takes_forever.give_me_data()
我的类:
class detach:
def __init__(self, func):
self.detached_func = execute_as_thread(func)
def give_me_data(self)
if self.detached_func.is_done(): # function completed and didnt die
return [self.detached_func.output]
else: # something went wrong or function is still running
return None
你可以尝试在字典中传递返回,也许。 'return {'success':success,'origin':origin ... etc等}} – 2012-03-02 20:41:13