根据官方描述,asyncio中的事件是属于单个线程的,下面这段程序中即属于main线程。但是为什么下面的ThreadPollExecutor(2)中的两个线程的能共享一个loop?
拜托大神解释一下事件循环的本质到底是什么?官方文档只提供了一系列的api,到现在我也并没有真正的理解。
import asyncio from concurrent.futures import ThreadPoolExecutor print('running async test') def say_boo(): i = 0 while i < 10: print('...boo {0}'.format(i)) i += 1 def say_baa(): i = 0 while i < 10: print('...baa {0}'.format(i)) i += 1 if __name__ == "__main__": executor = ThreadPoolExecutor(2) loop = asyncio.get_event_loop() boo = asyncio.ensure_future(loop.run_in_executor(executor, say_boo)) baa = asyncio.ensure_future(loop.run_in_executor(executor, say_baa))
丢你一个网址
简单来说loop是一个进程所拥有的,所以里面的线程共享一个loop不是很正常吗.比如你可以试试用socket.socket来替换一下socket,然后看看这个进程和它所属的线程的情况.