线程不会调用函数 (Python)
Threading won't call function (Python)
我有一个用 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)
也许这会导致问题?
最后一个中的打印语句有效,当我在线程语句之前或之后添加打印时它也有效。
running
是您代码中的局部变量。将 global running
添加到 start_sirene()
所以,在尝试了几个小时的各种事情之后,我找到了解决方案,但仍然不明白这个问题。
显然程序不喜欢很多步骤。我走了一步(启动警报器方法)但使用了完全相同的代码,突然它起作用了。完全不知道为什么会出现这个问题。有知道的请赐教xD
它对我来说工作得很好,您也可以将 运行 指定为 thread_function 的关键字参数。
import threading
def siren_loop(running):
while running:
print 'dit is een print'
t = threading.Thread(target=siren_loop, kwargs=dict(running=True))
t.start()
我有一个用 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)
也许这会导致问题? 最后一个中的打印语句有效,当我在线程语句之前或之后添加打印时它也有效。
running
是您代码中的局部变量。将 global running
添加到 start_sirene()
所以,在尝试了几个小时的各种事情之后,我找到了解决方案,但仍然不明白这个问题。
显然程序不喜欢很多步骤。我走了一步(启动警报器方法)但使用了完全相同的代码,突然它起作用了。完全不知道为什么会出现这个问题。有知道的请赐教xD
它对我来说工作得很好,您也可以将 运行 指定为 thread_function 的关键字参数。
import threading
def siren_loop(running):
while running:
print 'dit is een print'
t = threading.Thread(target=siren_loop, kwargs=dict(running=True))
t.start()