国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python高级 > 深究Python中的asyncio库-线程同步

深究Python中的asyncio库-线程同步

Python

头像

Python

2019-06-04 11:03:435000浏览 · 0收藏 · 0评论

前面的代码都是异步的,就如sleep,需要用asyncio.sleep而不是阻塞的time.sleep,如果有同步逻辑,怎么利用asyncio实现并发呢?答案是用run_in_executor。在一开始我说过开发者创建 Future 对象情况很少,主要是用run_in_executor,就是让同步函数在一个执行器( executor)里面运行。

同步代码

def a():
    time.sleep(1)
    return 'A'
async def b():
    await asyncio.sleep(1)
    return 'B'
def show_perf(func):
    print('*' * 20)
    start = time.perf_counter()
    asyncio.run(func())
    print(f'{func.__name__} Cost: {time.perf_counter() - start}')
async def c1():
    loop = asyncio.get_running_loop()
    await asyncio.gather(
        loop.run_in_executor(None, a),
        b()
    )
In : show_perf(c1)
********************
c1 Cost: 1.0027242230000866

可以看到用run_into_executor可以把同步函数逻辑转化成一个协程,且实现了并发。这里要注意细节,就是函数a是普通函数,不能写成协程,下面的定义是错误的,不能实现并发:

async def a():
    time.sleep(1)
    return 'A'

因为 a 里面没有异步代码,就不要用async def来定义。需要把这种逻辑用loop.run_in_executor封装到协程:

async def c():
    loop = asyncio.get_running_loop()
    return await loop.run_in_executor(None, a)

大家理解了吧?

loop.run_in_executor(None, a)这里面第一个参数是要传递concurrent.futures.Executor实例的,传递None会选择默认的executor:

In : loop._default_executor
Out: <concurrent.futures.thread.ThreadPoolExecutor at 0x112b60e80>

当然我们还可以用进程池,这次换个常用的文件读写例子,并且用:

async def c3():
    loop = asyncio.get_running_loop()
    with concurrent.futures.ProcessPoolExecutor() as e:
        print(await asyncio.gather(
            loop.run_in_executor(e, a),
            b()
        ))
In : show_perf(c3)
********************
['A', 'B']
c3 Cost: 1.0218078890000015

下一节:深究Python中的asyncio库-线程池

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

大雞巴亂倫1~2集在线播放| 共享女儿小诗1~10章的背景资. | 十九岁暴躁少女CSGO免费观看| 《疯狂伴娘》在线观看| 玩隐私位置游戏| 《厨房韵母2》动漫下线了吗| 开国上将张宗逊| 你用甘甜的乳汁把我喂养大的歌词| 欲奴第二季电视剧全集在线看| 星空无限传媒免费观看电视剧| 私じやなかったんだね简谱| 亲吻姐姐| 军营里饱满的乳被揉捏玩弄| 《金莲浮史》台湾绝版| 《请好好疼爱里面》免费观看| 禁忌4大结局| 二人生猴子全程免费| 蜜桃浏览器| 驾校情缘(老树开花)孙潇笔趣.| 泰剧《缠绕的夜晚》免费观看| 宝贝今天可不可以不带小雨伞小说| 欧美精品| DJ快了又快又骚的POP歌曲| 无码精品国产AV在线观看| 二人生猴子全程免费| 扌暴辶鬲的短文| 沙漠女性治疗营2| 妈妈洗澡不把门关紧暗示什么| 双人床上剧烈运动会怎么消除| 小妈妈2免费观看完整电视剧| 东北老阿姨高清免费观看电视剧 | 《军妓肉体》在线观看| 九九影视在线观看免费最新电视剧| 被老师摸着J勃起有14厘米| 麻豆| 东北老肥熟口味重的原因分析| 日剧《疯狂上司》的演员阵容| 电影《满足2》完整版在线观看| 双男主做酱酱酿酿视频大全真人版| 灭火宝贝2:决战丛林| 小妖精你真要我的命