线程不会调用函数(Python)

时间:2017-02-02 19:25:02

标签: python multithreading python-2.7 python-multithreading

我有一个用python 2.7编写的脚本,它调用一个线程。但是,无论我做什么,线程都不会调用该函数。

它所调用的功能:

def siren_loop():
    while running:
        print 'dit is een print'

我试图称呼它的方式:

running = True
t = threading.Thread(target=siren_loop)
t.start()

或:

running = True
thread.start_new_thread( siren_loop, () )

我甚至尝试向siren_loop添加参数,看看是否可行,但没有变化。我只是不能在siren_loop函数中打印这些行。

我还尝试了许多其他奇怪的事情,显然这些事情并没有奏效。我做错了什么?

编辑:由于人们说它有效,我试图从另一个函数调用该线程。所以它看起来像这样:

def start_sirene():
    running = True
    t = threading.Thread(target=siren_loop)
    t.start()

然后那部分来自:

if zwaailichtbool == False:
        start_sirene()
        print 'zwaailicht aan'
        zwaailichtbool = True
        sleep(0.5)

也许这可能导致问题? 最后一个中的print语句有效,当我在线程语句之前或之后添加一个打印时,它也起作用。

3 个答案:

答案 0 :(得分:1)

所以,经过几个小时的尝试,我找到了一个解决方案,但仍然不明白这个问题。

显然程序并不喜欢这么多步骤。我走了一步(开始警笛方法),但使用完全相同的代码,突然它起作用了。不知道为什么会出现这个问题。如果有人知道,请赐教xD

答案 1 :(得分:0)

running是代码中的局部变量。将global running添加到start_sirene()

答案 2 :(得分:0)

它对我来说非常好,你也可以指定作为thread_function的关键字参数运行。

app.js