用于实现任务的自由切换
安装pip3 install gevent
#创建协程对象:gevent.spawn(func函数名,参数)
#gevent.spawn(funa,1,2,x=4)
join:阻塞,直到这个协程执行完毕
基本:
import gevent#导入模块
def write():
print('homework')
print('finish')
def eat():
print('snack')
print('over')
g1=gevent.spawn(write)
g2=gevent.spawn(eat)
g1.join()#等待g1执行完毕
g2.join()
import gevent#导入模块
def funa(n):
for i in range(n):
print(gevent.getcurrent(),i)#返回正在执行的greenlet
gevent.sleep(1)#用来模拟一个耗时操作,注意不是time模块中的sleep
g1=gevent.spawn(funa,2)#2表示funa参数
g2=gevent.spawn(funa,2)
g3=gevent.spawn(funa,2)
g1.join()#等待g1执行完毕,按顺序执行
g2.join()
g3.join()
gevent.sleep() 与time.sleep()都可以用,但是gevent不能直接识别time模块
#from gevent import monkey
import gevent,time#导入模块
from gevent import monkey
monkey.patch_all() #打补丁,将程序中用到耗时操作的代码,换为gevent中实现的模块
def task(name):
for i in range(3):
print(f'函数名是:{name},i的值是:{i}')
time.sleep(1)#打补丁操作
#创建协程
g1=gevent.spawn(task,'lihailu')
g2=gevent.spawn(task,'lihai')
g1.join()
g2.join()
gevent.joinall()方法的参数是一个协程的对象列表,它会等待所有的协程都执行完毕后再退出
import gevent,time#导入模块
from gevent import monkey
monkey.patch_all() #打补丁,将程序中用到耗时操作的代码,换为gevent中实现的模块
def task(name):
for i in range(3):
print(f'函数名是:{name},i的值是:{i}')
time.sleep(1)#打补丁操作,或者直接gevent.sleep(1)
gevent.joinall([gevent.spawn(task,'task1'),gevent.spawn(task,'task2')])
1万+

被折叠的 条评论
为什么被折叠?



