使用asyncio.run_coroutine_threadsafe()函数为每个子线程创建独立的事件循环。
示例代码:
import asyncio
from threading import Thread
async def my_coroutine(loop):
# 异步操作
pass
def child_thread(loop):
asyncio.set_event_loop(loop)
loop.run_forever()
if __name__ == '__main__':
for i in range(5):
loop = asyncio.new_event_loop()
t = Thread(target=child_thread, args=(loop,))
t.start()
asyncio.run_coroutine_threadsafe(my_coroutine(loop), loop)
上述示例代码使用asyncio.new_event_loop()为每个子线程创建独立的事件循环,使用Thread()函数创建子线程,并在子线程中通过asyncio.set_event_loop()设置事件循环。最后使用asyncio.run_coroutine_threadsafe()函数在每个循环中运行协程。