从外部控制python线程的运行时间

时间:2016-11-18 10:58:36

标签: python multithreading python-multithreading

我正在尝试生成一个python线程,它根据某个条件重复执行特定的操作。如果条件不满足则线程应该退出。我编写了以下代码,但它无限期地运行。

class dummy(object):
def __init__(self):
    # if the flag is set to False,the thread should exit
    self.flag = True

def print_hello(self):
    while self.flag:
        print "Hello!! current Flag value: %s" % self.flag
        time.sleep(0.5)

def execute(self):
    t = threading.Thread(target=self.print_hello())
    t.daemon = True # set daemon to True, to run thread in background
    t.start()


if __name__ == "__main__":
    obj = dummy()
    obj.execute()
    #Some other functions calls
    #time.sleep(2)
    print "Executed" # This line is never executed
    obj.flag = False

我是python线程模块的新手。我已经阅读了一些建议使用threading.Timer()函数的文章,但这不是我需要的。

1 个答案:

答案 0 :(得分:0)

问题行是t = threading.Thread(target=self.print_hello()),更具体地说是target=self.print_hello()。这会将target设置为self.print_hello()的结果,并且由于此函数永远不会结束,因此永远不会设置它。您需要做的是使用t = threading.Thread(target=self.print_hello)将其设置为函数本身。