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

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

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

모든 응답 (1)
左手右手慢动作

URL을 잃어버렸습니다

간단히 말하면 루프는 프로세스의 소유이므로 그 안에 있는 스레드가 루프를 공유하는 것은 정상이 아닌가요? 예를 들어 소켓을 소켓.socket으로 교체한 다음 프로세스를 살펴보면 됩니다. 그리고 그것이 속한 스레드입니다.

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!