17年12 月5日
协程
:单线程实现并发。
ps:并非所有的并发对效率都有意义。
1 gevent模块
协程:单线程下实现并发(并发指的是看起来同时运行,实现方式:切换+保存状态)
遇到IO切换到其他任务去执行,这种切换才能提高效率
gevent模块
1、切换+保存状态
2、检测单线程下任务的IO,实现遇到IO自动切换
只有大招:(yield,Greenlet不太会)
#pip3 install gevent
#1、切换+保存状态
#2 检测IO,实现遇到IO切换
from gevent import monkey;monkey.patch_all()
import gevent
import time
def eat(name):
print('%s eat 1' %name)
time.sleep(2)
print('%s eat 2' %name)
def play(name):
print('%s play 1' %name)
time.sleep(3)
print('%s play 2' %name)
g1=gevent.spawn(eat,'alex')
g2=gevent.spawn(play,'egon')
g1.join()
g2.join()
========================================
17年12月6日:
#pip3 install gevent
# from gevent import monkey;monkey.patch_all() # 打补丁,卸载最前面
# import gevent
import time
def task1(name):
print('%s is run 1' %name)
time.sleep(3)
print('%s is run 2' %name)
def task2(name):
print('%s is run 1' %name)
time.sleep(2)
print('%s is run 2' %name)
# g1=gevent.spawn(task1,'alex')
# # print('===>1')
# g2=gevent.spawn(task2,'egon')
# # print('===>2')
# g1.join()
# g2.join()
# gevent.joinall([g1,g2])
热勇 --- 栗先达