【发布时间】:2017-02-02 19:25:01
【问题描述】:
我有一个用 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)
也许这会导致问题? 最后一个中的打印语句有效,当我在线程语句之前或之后添加打印时它也有效。
【问题讨论】:
-
我刚刚尝试了您的代码,使用您尝试调用它的第一种方式,它连续打印出您在
siren_loop中的声明。所以我不确定问题是什么。 -
也使用 QPython 进行了验证。你的代码很好。
-
我编辑了这个问题,把我剩下的一些代码放在那里。
-
也许
zwaailichtbool不是假的? -
创建线程后程序的其余部分做什么?如果它立即存在,线程将没有机会运行。另外,你是如何运行这一切的?你确定你有一个控制台打印语句的输出应该去的地方吗?最后,您确定要使用 Python 2.7 运行它吗?因为当你使用 Python 3.x 运行它时,线程只会因为语法错误而崩溃。
标签: python multithreading python-2.7 python-multithreading