用Python中的线程更改全局变量

时间:2014-07-23 01:29:09

标签: python python-2.7 timer python-multithreading

我正在尝试编写一个每10秒更新一次全局变量的脚本。为简单起见,我们只需在教授时间后增加q

import time, threading

q = 0
def f(q):
    # get asset position every 10 seconds:
    q += 1
    print q

    # call f() again in 10 seconds
    threading.Timer(10, f).start()


# start calling f now and every 10 sec thereafter
f(q)

而python说:

UnboundLocalError: local variable 'q' referenced before assignment

更改变量q的正确方法是什么?


此示例使用线程,不更新任何值。 Run certain code every n seconds

1 个答案:

答案 0 :(得分:2)

您需要将q明确声明为全局。 q += 1否则会使解释者感到困惑。

import threading

q = 0
def f():
    global q
    q += 1
    print q
    threading.Timer(10, f).start()

f()