Python如何在方法之间传递连续生成的数据流

问题描述 投票:0回答:2

我有一个方法,可以不断生成数据,打印在控制台上。让我们说一些简单的事情,比如生成随机数:

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,并且很好奇如何在方法之间传递数据流,如果可以的话。

python kafka-python data-stream
2个回答
0
投票

你可以使用 yield:

import random

def number_generator():
         yield random.randint(1,100)

def func(count):
    for _ in range(count):
        print(next(number_generator()))
        
func(10)

0
投票

要在 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())
© www.soinside.com 2019 - 2024. All rights reserved.