定義:不用使用多線程或多進程,就可以實現多任務。
優點:執行效率極高,因爲程序的切換不是由線程切換,而是由自身控制,因此沒有
線程間切換的開銷,線程越多,效率越明顯。
攜程是一個單線程,要利用多核cpu,繼續要使用多進程+攜程,Python對攜程的支持是通過
生成器來支持的。
#---------------------next()和yield()之間進行切換
def A():
while 1:
print('a')
yield()
def B():
while 1:
print('b')
next(a)
a = A()
B()
#---------------r = c.send(n)和n = yield r 之間進行
def consumer():
r = ''
while True:
n = yield r #wait for productor produces
if not n:
return
print('consuming %s..' % n)
r = '200 ok'
def produce(c):
c.send(None) #start the generator
n = 0
while n<5:
n = n+1
print('producing %s...' % n)
r = c.send(n)
print('consuming return: %s' % r)
c.close()
c = consumer()
produce(c)