【发布时间】:2015-09-28 01:53:24
【问题描述】:
for x,y in my_dict.iteritems():
for z in y:
def done_callback(result):
code,content=result.get()
if code==0:
if content:
new_content.append(content)
else:
pass
else:
return error_html(environ,start_response,content)
try:
pool.apply_async(function_returns_tuple,(x,z,my_val),done_callback)
except Exception as e:
print e
当我看到 new_content 的值时,它是空的并且还有回调函数 - done_callback 没有被调用。我错过了某些部分吗?
【问题讨论】:
-
“当我看到 new_content 的值”从未在代码中显示,它与问题相关。但这似乎是典型的异步问题。请记住 - 任何异步结果都只能从回调(或回调在堆栈跟踪中的某个位置)访问。您可能喜欢使用
concurrent.futures.ThreadPoolExecutor为您管理异步。 -
new_content 只是一个列表,我在所有这些之外,在所有 for 循环之外检查它。
-
那么就如我所料。假设您有四个孩子;你告诉他们“我要去上班,但我的手机不见了,所以大家搜索,找到后给我!”然后,而不是等待,你马上去上班。你的一个孩子找到了电话,然后试图把它给你,但你已经不在了。与此同时,你在工作,没有电话,想知道为什么这些天孩子们这么懒惰。
-
那么如何解决它以使父母和孩子同步?注意:python 2.7
标签: multithreading python-2.7 callback