任務例子:喝水、吃飯動做須要耗時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) ])