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» никогда не отображается в коде, и это относится к вопросу. Но это похоже на типичную проблему асинхронности. Помните - любые результаты async должны быть доступны только из обратного вызова (или где-либо, где обратный вызов находится в трассировке стека). Вам может потребоваться использовать 'concurrent.futures.ThreadPoolExecutor' для управления async для вас. – Amadan
new_content - это список, который я проверяю вне всего этого, вне всех циклов for. – user3089927
Тогда, как я и предсказывал. Скажем, у вас четверо детей; вы говорите им: «Мне нужно идти на работу, но мой телефон отсутствует, поэтому все ищут и дают его мне, когда вы его найдете!» а затем, вместо того, чтобы ждать, * вы идете на работу сразу *. Один из ваших детей находит телефон, затем пытается отдать его вам, но вас больше нет. Между тем, вы на работе, без разговора, удивляясь, почему дети так ленивы в эти дни. – Amadan