import threading
import asyncio
def thread_loop_task(loop):
# 爲子線程設置自己的事件循環
asyncio.set_event_loop(loop)
async def work_2():
while True:
print('work_2 on loop:%s' % id(loop))
await asyncio.sleep(2)
async def work_4():
while True:
print('work_4 on loop:%s' % id(loop))
await asyncio.sleep(4)
future = asyncio.gather(work_2(), work_4())
loop.run_until_complete(future)
if __name__ == '__main__':
# 創建一個事件循環thread_loop
thread_loop = asyncio.new_event_loop()
# 將thread_loop作爲參數傳遞給子線程
t = threading.Thread(target=thread_loop_task, args=(thread_loop,))
t.daemon = True
t.start()
main_loop = asyncio.get_event_loop()
async def main_work():
while True:
print('main on loop:%s' % id(main_loop))
await asyncio.sleep(4)
main_loop.run_until_complete(main_work())
線程中使用事件循環
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.