首页 > 解决方案 > 我想更新我在 while 循环中使用的列表,而循环仍在运行。有没有办法做到这一点?

问题描述

我有一个使用 while 循环的函数,理想情况下我想设置它然后在后台运行。在这个 while 循环中,我使用了一个列表。我想要做的是,如果我想到要在此列表中添加其他内容,我可以简单地编辑列表,然后在下次循环开始时使用更新的列表。目前,我似乎无法找到一种方法来做到这一点。

我尝试在单独的程序中定义列表,然后在每个循环开始时将其导入。然后我在单独的程序中更新了列表,但这并没有反映在输出中。

import time
while True:
    from list_test import sample_list
    print(sample_list)
    time.sleep(30)

当我更新 sample_list 时,输出不会改变。有人知道为什么吗?抱歉,如果解决方案很简单,我对一般编程很陌生!

标签: python

解决方案


正如评论中已经说明的那样,通常不建议更新您正在迭代的列表(即使您只是在示例中打印它)。也就是说,您可以将importlibreload方法一起使用。例如像这样:

import time
import importlib

list_module = importlib.import_module("list_test")
sample_list = list_module.sample_list
while True:
    sample_list = importlib.reload(list_module).sample_list
    print(sample_list)
    time.sleep(5)

请注意,您必须手动更新列表才能看到更改。在运行时用另一个程序更新列表将不起作用。


推荐阅读