我有一堆协同作用
@asyncio.coroutine
def do_work():
global COUNTER
result = ...
if result.status == 'OK':
COUNTER += 1
和另一个
COUNTER = 0
@asyncio.coroutine
def display_status():
while True:
print(COUNTER)
yield from asyncio.sleep(1)
必须显示已完成工作的协同程序的数量。如何正确实施这项任务?以下解决方案不起作用
@asyncio.coroutine
def spawn_jobs():
coros = []
for i in range(10):
coros.append(asyncio.Task(do_work()))
yield from asyncio.gather(*coros)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.create_task(display_status())
loop.run_until_complete(spawn_jobs())
loop.close()
我希望无论do_work()协同程序做什么,计数器都会每秒打印到控制台。但我只有两个输出:0和几秒后重复10。