#2
sssooosss2023-04-28 16:34
|
# 适用于高并发任务处理,原理类似于yield
# 缺点是单线程,不能多核,不能被阻塞
# 标准库协程模块asyncio生态不好,用的人并不多
# 第三方协程模块有greenlet和Gevent
程序代码:
# 协程模块gevent是greenlet的升级版
# gevent只有要遇到本身供的阻塞函数时,才会跳转协程
# 如:gevent.sleep(2)或gevent.joinall([fun1,fun2,...])
import gevent
def fun1(arg1):
print('fun1开始')
print('参数:',arg1)
gevent.sleep(2)
print('fun1结束')
def fun2(arg1,arg2):
print('fun2开始')
print('参数1:',arg1)
gevent.sleep(3)
print('参数2:',arg2)
print('fun2结束')
gv1 = gevent.spawn(fun1,1)
gv2 = gevent.spawn(fun2,1,2)
gevent.joinall([gv1,gv2])
运行结果:
fun1开始
参数: 1
fun2开始
参数1: 1
fun1结束
参数2: 2
fun2结束