gpt4 book ai didi

python - 如何在 python 线程中运行和停止无限循环

转载 作者:太空狗 更新时间:2023-10-30 02:04:58 25 4
gpt4 key购买 nike

我需要运行(一系列)无限循环,该循环必须能够检查外部设置的终止条件。我认为线程模块会允许这样做,但我的努力失败了。这是我正在尝试做的一个例子:

import threading

class Looping(object):

def __init__(self):
self.isRunning = True

def runForever(self):
while self.isRunning == True:
"do stuff here"

l = Looping()
t = threading.Thread(target = l.runForever())
t.start()
l.isRunning = False

我原以为 t.start 会在一个单独的线程中运行,而 l 的属性仍然可以访问。这不是发生的事情。我在 python shell (IPython) 中尝试了上面的代码片段。 t 的执行在实例化后立即开始,它会阻止任何进一步的输入。显然我对线程模块有一些不正确的地方。关于如何解决问题的任何建议?

最佳答案

您太早调用了runForever。使用不带括号的 target = l.runForever

一个函数调用只有在它的参数被评估之后才会被评估。当您编写 runforever() 时,它会立即调用该函数,甚至在创建线程之前。只需传递 runForever,您就传递了函数对象本身,线程设备可以在准备就绪时调用它。重点是实际上并不想调用runForever;您只想告诉线程代码 runForever稍后应该调用的。

关于python - 如何在 python 线程中运行和停止无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15847717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com