💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 简介 gevent已经实现了协程,但是这个还人工切换,有点麻烦. python有比这个更强的并能自动切换任务的模块gevent 其原理是当一个greenlet遇到IO时,比如访问网络,就自动切换到其他的greenlet.等到IO操作完成,再在适当的时候切换回来继续执行 # 安装 ~~~ pip3 install gevent ~~~ # 代码 ~~~ import time import gevent def f(n): for i in range(n): print(gevent.getcurrent(), i) # 这种延时才可以,time的那种延迟不行 gevent.sleep(0.5) print('---1---') g1 = gevent.spawn(f, 5) print('---2---') g2 = gevent.spawn(f, 5) print('---3---') g3 = gevent.spawn(f, 5) # 等待g1运行 g1.join() g2.join() g3.join() ~~~ 如果原来的程序用的是time.sleep 那么需要这样改 ~~~ from gevent import monkey import gevent import random import time # 有耗时操作时需要 monkey.patch_all() # 将程序中用到的耗时操作的代码,换为gevent中自己实现的模块 def coroutine_work(coroutine_name): for i in range(10): print(coroutine_name, i) time.sleep(random.random()) gevent.joinall([ gevent.spawn(coroutine_work, 'work1'), gevent.spawn(coroutine_work, 'work2') ]) ~~~