线程不会调用函数(Python)

2024-05-18 07:54:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用python2.7编写的脚本,它调用一个线程。但是,不管我做什么,线程都不会调用函数。在

它调用的函数:

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

我试着称之为:

^{pr2}$

或者:

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

我甚至试着给siren_循环添加参数,看看这是否有效,但没有改变。我只是不能让它打印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语句起作用,当我在thread语句之前或之后添加print语句时,它也起作用。在


Tags: 函数脚本looptruedef语句线程thread
3条回答

所以,在我试了几个小时的各种事情之后,我找到了一个解决方案,但仍然不明白问题的存在。

显然这个程序不喜欢很多步骤。我走了一步(start-siren方法),但是使用了完全相同的代码,突然它起作用了。我不知道为什么会有问题。如果有人知道,请给我启发

对我来说,它工作得非常好,您还可以将running指定为thread_函数的关键字参数。在

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()

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

相关问题 更多 >