任务例子:喝水、吃饭动作需要耗时1S
单任务:(耗时20s)
for i in range(10):
print('a正在喝水')
time.sleep(1)
print('a正在吃饭')
time.sleep(1)
一、多线程(耗时10s)
协程gevent模块
代码如下:
# 定义一个gevent的线程阻塞规则
# 任何的阻塞都将切换协程
monkey.patch_all()
def start(num):
print('--开始执行任务{}--'.format(num))
time.sleep(2)
print('--结束执行任务{}--'.format(num))
if __name__ == '__main__':
# 调用协程的方法1
# g1 = gevent.spawn(start, 1)
# g2 = gevent.spawn(start, 2)
# g3 = gevent.spawn(start, 3)
# join方法为阻塞方法,调用即开始切换协程
# g1.join()
# g2.join()
# g3.join()
#调用协程的方法2
gevent.joinall([
gevent.spawn(start,1),
gevent.spawn(start,2),
gevent.spawn(start,3)
])