python-update线程变量
如何更新运行线程中的变量,该线程是基于该变量的无限循环?python-update线程变量,python,multithreading,Python,Multithreading,如何更新运行线程中的变量,该线程是基于该变量的无限循环? 下面是我尝试的简化版本,当然没有结果,我也找不到任何指针 import some_module as mod import threading class thr (threading.Thread): NUM = 5 # set a default value to start the script def run (self): mod.NUM = NUM mod.main_loop
下面是我尝试的简化版本,当然没有结果,我也找不到任何指针
import some_module as mod
import threading
class thr (threading.Thread):
NUM = 5 # set a default value to start the script
def run (self):
mod.NUM = NUM
mod.main_loop()
try:
thr().start()
time.sleep(1)
thr().NUM = 2
time.sleep(1)
thr().NUM = 6
time.sleep(1)
thr().NUM = 8
问题在于,每次“调用”(即实例化)
thr
时,您都在创建一个新线程。将代码更改为
t = thr()
t.start()
time.sleep(1)
t.NUM = 2
time.sleep(1)
t.NUM = 6
time.sleep(1)
t.NUM = 8
time.sleep(1)
可能尝试使用队列更改NUM变量 请在此查看示例:
通常说来,队列允许您在线程之间发送数据。使用
get()
从队列获取数据,使用put()
将数据放入队列。不幸的是,它仍然没有更新无限循环中的变量它更新线程对象实例中的NUM
变量。。。要更新mod.NUM
,只需使用mod.NUM=2
。。。等等。到目前为止,我已经知道了,我的问题是更新后的变量没有被送入无限循环…@nxet:什么循环?您在问代码中未显示的问题是什么?我的猜测是,某个_module.py中第42行的语句包含错误。。。但这是一个非常疯狂的猜测:-Dman我差一点就打开了某个_module.py,看看有没有错误:/这就是我在这里迷失的方式。基本上,我启动的线程内部有一个无限循环,我要更新的变量是循环解析执行的变量。我认为这与此无关,但在这一点上,可能值得注意的是,某些_module.py实际上是一个多路复用脚本。基本上,我对模块说“57”,它在两个led条之间无限复用所述值(非常粗略地解释)。我需要更新该值,并查看ledsI反映的更改。对于我有限的语言知识来说,这恐怕有点太笼统了,不幸的是,阅读提供的链接没有多大帮助。你能再详细说明一下吗?多谢了,第二个链接更有用。但我是否错误地认为我每次都被迫杀死并繁殖一个新线程?@nxet我不明白:)什么意思——“我每次都被迫杀死并繁殖一个新线程?”