根据官方描述,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))
Saya kehilangan URL untuk anda
Ringkasnya, gelung dimiliki oleh proses, jadi bukankah biasa untuk benang di dalamnya berkongsi gelung Contohnya, anda boleh cuba menggantikan soket dengan socket.socket, dan kemudian lihat proses dan benang yang dimilikinya.