python 協程

協程之前我們明白Python的進程和線程,這裡我們來說一下協程

  • 子程序切換不是線程切換,而是由程序自身控制
  • 沒有線程切換的開銷,和多線程比,線程數量越多,協程的性能優勢就越明顯
  • 不需要多線程的鎖機制,因為只有一個線程,也不存在同時寫變量衝突,在協程中控制共享資源不加鎖
  • 協程實現

<code>def custumer():
r = ''
while True:
n = yield r # 接受send的值 返出yield的值
if not n:
return
print('custer {}'.format(n))
r = 'done'

def produce(c):
c.send(None) # 啟動
n = 0
while n < 5:
n += 1
print('custer {}'.format(n))
r = c.send(n)
print('custer return {}'.format(r))
c.close()

c = custumer()
produce(c)/<code>


python 協程


分享到:


相關文章: