您的位置:首页 > 其它

协程

2016-07-29 00:17 197 查看
1. 执行效率极高。因为子程序切换不是线程切换,而是由程序自身控制,因此没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。 2. 不需要多线程的锁机制, 因为只有一个线程,不存在写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了。 协程始终只是一个线程执行,那如何得用多核CPU呢? 最简单的办法就是多进程+协程, 可获得极高的性能、python对协程的支持是通过generator实现的。 在生成器generator中, 可以通过for来迭代,也可以通过next()获取由yield语句返回的下一个值。 在python中yield不但可以返回一个值,它还可以接收调用者发出的参数。 yield实现肥波纳妾:

def fb():
a, b = 0, 1
c = 0
while True:
yield c
c = a + b
a, b = b, c

if __name__ == "__main__":
tmp = fb()
for i in range(0, 10):
result = tmp.__next__()
priint(result)

生产者消费者模型:

def consumer():
r = ''
while True:
n = yield r
if not n:
return
print('[CONSUMER] Consuming %s...' % n)
r = '200 OK'

def produce(c):
c.send(None)
n = 0
while n < 5:
n = n + 1
print('[PRODUCER] Producing %s...' % n)
r = c.send(n)
print('[PRODUCER] Consumer return: %s' % r)
c.close()

c = consumer()
produce(c)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: