Python3之协程

xiaoxiao2021-02-28  89

协程定义

又称微线程,纤程。英文名Coroutine。轻量级的线程,用户可以控制调度切换任务。

协程使用的模块

greenlet

代码示例

from greenlet import greenlet def eat(name): print('%s eat1' % name) g2.switch('quincy') print('%s eat2' % name) g2.switch() def play(name): print('%s play1' % name) g1.switch() print('%s play2' % name) g1 = greenlet(eat) g2 = greenlet(play) # 只需要第一次调用时传参,以后调用不需要传参 g1.switch('quincy')

Gevent

代码示例

from gevent import monkey; import gevent, time monkey.patch_all() def eat(name): print('%s eat1' % name) time.sleep(2) print('%s eat2' % name) return 1 def play(name): print('%s play1' % name) time.sleep(3) print('%s play2' % name) return 2 g1 = gevent.spawn(eat, 'quincy') g2 = gevent.spawn(play, 'quincy') gevent.joinall([g1, g2]) print('主') print(g1.value) print(g2.value)

代码讲解

主要用到gevent.spawn提交任务,用monkey去检测代码执行过程中是否有I/O,如果有则进行功能直接的切换,进而尽可能减少I/O阻塞。如果函数有返回值,可以直接g.value获取。用spawn提交任务后调用join方法。
转载请注明原文地址: https://www.6miu.com/read-47046.html

最新回复(0)