python - 更新线程变量

时间:2016-06-01 20:32:20

标签: 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()

try:
    thr().start()
    time.sleep(1)
    thr().NUM = 2
    time.sleep(1)
    thr().NUM = 6
    time.sleep(1)
    thr().NUM = 8

2 个答案:

答案 0 :(得分:1)

问题是你每次“调用”(即实例化)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)

答案 1 :(得分:0)

也许尝试使用队列来更改NUM变量。

https://docs.python.org/2/library/queue.html

点击此处查看示例:

https://pymotw.com/2/Queue/

通常说,队列允许您在线程之间发送数据。使用get()从队列中获取数据,使用put()将数据放入队列。