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

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

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

répondre à tous(1)
左手右手慢动作

Je t'ai perdu une URL

Pour faire simple, une boucle appartient à un processus, alors n'est-il pas normal que les threads qu'elle contient partagent une boucle ? Par exemple, vous pouvez essayer de remplacer le socket par socket.socket, puis regarder ? le processus et le fil auquel il appartient.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!