并发 - Python中asyncio模块的loop为什么可以被线程池共享?
怪我咯
怪我咯 2017-04-18 10:07:03
0
1
430

根据官方描述,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))
怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(1)
左手右手慢动作

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan