python 3.6和ValueError:循环参数必须与未来
问题描述:
一致我只想运行一个简单的测试示例,但我得到下面的错误。我该如何解决?python 3.6和ValueError:循环参数必须与未来
import asyncio
import uvloop
import concurrent.futures
import time
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
async def do_some_work(x):
while True:
print("Waiting " + str(x))
await asyncio.sleep(x)
if __name__ == '__main__':
loop = asyncio.new_event_loop()
tasks = [asyncio.ensure_future(do_some_work(2)),
asyncio.ensure_future(do_some_work(5))]
loop.run_until_complete(asyncio.gather(*tasks))
Traceback (most recent call last):
File "/Users/worker_why.py", line 23, in <module>
loop.run_until_complete(asyncio.gather(*tasks))
File "uvloop/loop.pyx", line 1181, in uvloop.loop.Loop.run_until_complete (uvloop/loop.c:25184)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/tasks.py", line 508, in ensure_future
raise ValueError('loop argument must agree with Future')
ValueError: loop argument must agree with Future
答
loop = asyncio.new_event_loop()
如果你创建新的事件循环,不想到处传递,你也应该让这个循环电流方面:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
您是否尝试过通过新创建的循环, 'ensure_future'? 'asyncio.ensure_future(...,loop = loop)' – vaultah