协程

协程


一、创建协程

  • 协程是一种用户态的轻量级线程(本质是一个单线程)
  • 目的是最大化地利用好I/O阻塞的时间
  • 最基础的协程通过yield来实现不同任务之间的切换
  • 优点: 高并发+高扩展性+低成本
  • 缺点: 无法利用多核资源

1. 通过greenlet实现

from greenlet import greenlet
gr1 = greenlet(func_1)		# 创建greenlet对象
gr2 = greenlet(func_@)
gr1.switch()		# 切换其他协程

2. 通过gevent实现

import gevent
# 最大程度地监听I/O阻塞
from gevent import mokey
monkey.patch_all()

gevent.joinall([
	gevent.spawn(func_1)	# 第二个参数可以填写函数参数
	gevent.spawn(func_2)
])
gevent.sleep()	# 模拟实现真正地I/O阻塞(不同于time.sleep),用于函数中,让协程进行切换
posted @ 2021-04-03 11:54  notesForKai  阅读(82)  评论(0)    收藏  举报