任务例子:喝水、吃饭动做须要耗时1S多线程
单任务:(耗时20s)spa
for i in range(10):线程
print('a正在喝水')orm
time.sleep(1)协程
print('a正在吃饭')event
time.sleep(1)form
1、多线程(耗时10s)方法
协程gevent模块im
代码以下: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) ])