永发信息网

python里怎么实现多个协程一起执行,只要完

答案:2  悬赏:0  手机版
解决时间 2021-11-28 06:17
python里怎么实现多个协程一起执行,只要完
最佳答案
需要使用新的函数as_completed()来实现,可以把多个并发的协程一起给它,但它把返回的结果变成一个生成器,每次返回一个协程的结果,与函数wait()一样,执行协程是乱序的,不会等所有协程执行完成才返回。例子:
import asyncio


async def phase(i):
    print('in phase {}'.format(i))
    await asyncio.sleep(0.5 - (0.1 * i))
    print('done with phase {}'.format(i))
    return 'phase {} result'.format(i)


async def main(num_phases):
    print('starting main')
    phases = [
        phase(i)
        for i in range(num_phases)
    ]
    print('waiting for phases to complete')
    results = []
    for next_to_complete in asyncio.as_completed(phases):
        answer = await next_to_complete
        print('received answer {!r}'.format(answer))
        results.append(answer)
    print('results: {!r}'.format(results))
    return results


event_loop = asyncio.get_event_loop()
try:
    event_loop.run_until_complete(main(3))
finally:
    event_loop.close()结果输出如下:starting main
waiting for phases to complete
in phase 2
in phase 1
in phase 0
done with phase 2
received answer 'phase 2 result'
done with phase 1
received answer 'phase 1 result'
done with phase 0
received answer 'phase 0 result'
results: ['phase 2 result', 'phase 1 result', 'phase 0 result']
全部回答
setInterval(函数名,1000); t: Timer = new Timer(1000, 5); t.addEventListener(TimerEvent.TIMER,函数名); t.addEventListener(TimerEvent.TIMER_COMPLETE, 函数名); t.start();
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
Cf老是掉线然后一串英文 out of memory
从北京西站下车 怎么去坐387路公交车啊
吃魔竽能丰胸吗
建设施工五大主体,
农历1994年3月16日出生的人,命运会怎样
QQ视频时图像是歪的
我有个陨石想卖掉,找什么样的人可以卖掉
哪种食物吃了会失眠 吃了会失眠的五种食物
My friend Mary is beautiful girl and gir
1.2.13.27.41.56.63.67.68.70.72.79.80. 哪些
从安阳的林州到河北省的涉县如何走?(自驾车)
秋后蚊子特别毒,防蚊招数学会了吗
雷峰夕照为什么叫雷峰夕照(简写)
鞋子穿一天就很臭怎么办
跪求 大神帮忙打开微信聊天记录的db数据库,
推荐资讯
张谓的《早梅》的解释和赏析
金蝶员工都是自备笔记本电脑的吗?
缺技术不知道如何学习
逻辑题:今天星期几?
二层别墅坡屋面的排水沟大概多宽
YORK电镀20KG哑铃大概多少钱?
平谷公租房现在可以申请么
Progress alwavs involves risks. You can
一个月瘦了十来斤正常吗
经常熬夜怎么保养皮肤
全面解读千古第一情圣 林妹妹为何钟情贾宝玉
炸鱼滚面掉渣是怎么回事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?