python协程和子程序区别?

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

回到顶部