【发布时间】:2019-07-03 15:39:36
【问题描述】:
我正试图让我的 asyncIO 期货进展。出于某种原因,我无法在任何其他范围内获取值更新。
例如:
import concurrent.futures
import time
import asyncio
import random
def get_progress(futures):
return sum([f.done() for f in futures])
def long_task(t):
time.sleep(1.5)
return t
loop = asyncio.get_event_loop()
executor = concurrent.futures.ProcessPoolExecutor(max_workers=4)
inputs = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
futures_ = [loop.run_in_executor(executor, long_task, i) for i in inputs]
for i in range(5):
time.sleep(1)
print(get_progress(futures_))
它只打印0。但是,如果我在终端中运行它并调用get_progress(futures_),它会按预期打印 7。
我在这里错过了什么吗?
【问题讨论】:
标签: python asynchronous python-3.6 python-asyncio