1.协程介绍
2.greenlet
# 1.简单实现协程
# import time
# def work1():
# while True:
# yield 1
# time.sleep(0.5)
#
# def work2():
# while True:
# yield 2
# time.sleep(0.5)
#
# if __name__ == '__main__':
# w1 = work1()
# w2 = work2()
# while True:
# print(next(w2))
# print(next(w1))
# 2.greenlet:一个用C实现的协程模块,
# 通过switch方法来实现任意函数之间的转换。
#
# from greenlet import greenlet
# def eat():
# print('开始吃东西')
# g2.switch()
# print('吃完了')
# g2.switch()
#
# def play():
# print('开始玩耍')
# g1.switch()
# print('玩完了')
#
# # 实例化协程
# g1 = greenlet(eat)
# g2 = greenlet(play)
# g1.switch() # 切换到g1中运行
# # g2.switch()
3.gevent
# 1.gevent方法:
# spawn(函数名, 参数)
# join:等待、阻塞
# joinall: 参数是一个协程对象列表
# gevent模块自带了sleep耗时函数
# import gevent
# def write():
# print('开始写代码')
# gevent.sleep(1)
# print('写完了')
#
# def play():
# print('开始玩手机')
# gevent.sleep(0.5)
# print('睡觉了')
#
#
# if __name__ == '__main__':
#
# g1 = gevent.spawn(write) # 创建协程对象
# g2 = gevent.spawn(play)
#
# g1.join() # 等待g1结束
# g2.join()
# 2.joinall方法:
# 3. 给程序打补丁
from gevent import monkey
import gevent
import time
# monkey.patch_all() # 将程序中用到的耗时操作的代码,替换为gevent中自己实现的模块
#
# def work(name):
# for i in range(3): # 0-2
# print('函数名是%s, i的值是:%s' % (name, i))
# time.sleep(1)
#
#
# gevent.joinall([
# gevent.spawn(work, 'w1'),
# gevent.spawn(work, 'w2')
# ])