繁体   English   中英

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

[英]How to run and stop an infinite loop in a python thread

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

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 start并且它阻止任何进一步的输入。 很明显我对线程模块没有正确的看法。 有关如何解决问题的任何建议?

你太早调用runForever 使用不带括号的target = l.runForever

函数调用在其参数之后才会被计算。 当你编写runforever() ,它会在创建线程之前调用该函数。 通过传递runForever ,您可以传递函数对象本身,然后线程设备可以在准备就绪时调用它。 关键是实际上并不想调用runForever ; 你只是想告诉线程代码runForever应该再打。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM