在另一个fi中使用从无限循环函数返回的变量

2024-09-27 09:30:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道标题听起来可能有点混乱,但我的挣扎是:

我有两个单独的文件,一个仅用于收集数据并转换(data_uy.py),第二个是主程序文件(main_uuy.py)。data.py中的核心函数如下所示(简化为ofc):

def some_function():
    #here some python magic happens
  while True:
    #more magic
    return var1, var2, var3

变量每隔几秒钟更新一次。现在我正试图在main_uuy.py中使用它们,到目前为止,我有以下几点:

import data_

var1, var2, var3 = data_.some_function()

当我打印变量时,一切都正常,但当然它们只导入一次,之后不会更新

我试过这样做:

import data_

while True:
    var1, var2, var3 = data_.some_function()
    print(var1, var2, var3)

尽可能频繁地更新它们,但由于某种原因它们没有更新

有没有一种方法可以实现这一点,同时将函数保存在单独的文件中


Tags: 文件函数pyimporttruedatamainmagic
1条回答
网友
1楼 · 发布于 2024-09-27 09:30:57

您正在寻找的功能是生成器。下面是您案例的sudo代码

你这样定义你的功能。您收集并转换数据,当数据块准备好进行处理时,您将其交给调用此函数的其他代码。但这不是并行处理。some_function()将暂停,直到处理该数据为止

def some_function():
    #here some python magic happens
    while True:
        #more magic
        yield var1, var2, var3

然后您可以像下面那样使用这个函数。循环将继续,直到某个函数上的循环未完成

for var1,var2,var3 in some_function():
    print(var1, var2, var3)

工作示例

def some_function():
    for x1, x2 in zip(range(1000),range(0,2000,2)):
        yield x1,x2


for x1,x2 in some_function():
    print(x1,x2)

相关问题 更多 >

    热门问题