我有一个方法,可以不断生成数据,打印在控制台上。让我们说一些简单的事情,比如生成随机数:
def number_generator():
while True:
random.randint(1,100)
time.sleep(0.5)
return
我有一个单独的方法应该接受输入并将此数据写入 Kafka 主题。
如何将此数据流从
number_generator()
传递到另一个方法。
P.S:我知道我可以在
send()
中编写 Kafka number_generator()
to topic 方法,但我正在学习 Python,并且很好奇如何在方法之间传递数据流,如果可以的话。
你可以使用 yield:
import random
def number_generator():
yield random.randint(1,100)
def func(count):
for _ in range(count):
print(next(number_generator()))
func(10)
要在 python 中创建生成器,您可以使用
yield
关键字:
def number_generator():
while True:
yield random.randint(1,100)
然后,您可以实例化此生成器并将其传递给旨在使用它的函数,例如:
def print10(gen):
n = 0
for val in gen:
print(val)
n += 1
if n >= 10:
break
print10(number_generator())