asyncio学习笔记

示例

import asyncio
async def func(id):
    print(id)
    
tasks = []
loop = asyncio.get_event_loop()
for id in range(10):
    tasks.append(func(id))

loop.run_until_complete(tasks)

疑难杂症

其他线程中使用会报错

RuntimeError: There is no current event loop in thread 'LoopThread'.

需要新建一个loop

import asyncio
async def func(id):
    print(id)

tasks = []
new_loop = asyncio.new_event_loop()
asyncio.set_event_loop(new_loop)
for id in range(10):
    tasks.append(func(id))

new_loop.run_until_complete(asyncio.wait(tasks))

如果函数内没有await, 会报错

TypeError: An asyncio.Future, a coroutine or an awaitable is required

所以运行前加一个asyncio.wait

本文链接:

https://www.lzskyline.com/archives/82/
1 + 6 =
快来做第一个评论的人吧~