python协程和子程序区别?
一 协程
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)
二 子程序调用
def consumer(n): if not n:
return
print('[CONSUMER] Consuming %s...' % n)
return '200 OK'
def produce():
n = 0
while n < 5:
n = n + 1
print('[PRODUCER] Producing %s...' % n)
r = consumer(n)
print('[PRODUCER] Consumer return: %s' % r)
produce()
这两种结果一样,协程可以用子程序写,看不出协程有什么特别?
回答:
协程是为了实现单线程的i/o密集型的任务并发(通过event loop),如果子程序的话,永远是串行的
以上是 python协程和子程序区别? 的全部内容, 来源链接: utcz.com/a/159720.html