使用生成器把Kafka写入效率提高1000倍
通过本文你会知道Python里面什么时候用yield合适。本文不会给你讲生成器是什么,所以你需要先了解Python的yield,再来看本文。
疑惑
多年以前,当我刚刚开始学习Python协程的时候,我看到绝大多数的文章都举了一个生产者-消费者的例子,用来表示在生产者内部可以随时调用消费者,达到和多线程相同的效果。这里凭记忆简单还原一下当年我看到的代码:
import time
def consumer():
product = None
while True:
if product is not None:
print('consumer: {}'.format(product))
product = yield None
def producer():
c = consumer()
next(c)
for i in range(10):
c.send(i)
start = time.time()
producer()
end = time.time()
print(f'直到把所有数据塞入Kafka,一共耗时:{end - start}秒')
相关文章