大佬们 我这协程写的有毛病吗?
想用 Python 做一个后台扫描工具
仿照 asyncio 官网的生产者消费者模式写了一个 demo
发现运行到一半会阻塞住(有时会,有时不会?)
但我看着貌似不会卡住啊
求大佬救救孩子
想用 Python 做一个后台扫描工具
仿照 asyncio 官网的生产者消费者模式写了一个 demo
发现运行到一半会阻塞住(有时会,有时不会?)
但我看着貌似不会卡住啊
求大佬救救孩子
https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor
不过 async def put 这个函数问题太大了,怎么都会出问题的。
他只创建了 consumer = asyncio.gather(…),但是没有勒令 consumer 进入执行啊?按照道理 asyncio.gather 并不具有执行一个 coroutine 的特性啊,只有 await 才能保证让一个 coroutine 进入运行状态啊?
主你得用 loop.create_task 把一个 coroutine 强行进入后台运行状态才对吧?
“If any awaitable in aws is a coroutine, it is automatically scheduled as a Task.”
def fn():
….something to do
await loop.run_in_executor(fn)
我这里已经把 consumer 取消了
try:
…
finally:
q.task_done()