我正在尝试生成一个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()
函数的文章,但这不是我需要的。
答案 0 :(得分:0)
问题行是t = threading.Thread(target=self.print_hello())
,更具体地说是target=self.print_hello()
。这会将target
设置为self.print_hello()
的结果,并且由于此函数永远不会结束,因此永远不会设置它。您需要做的是使用t = threading.Thread(target=self.print_hello)
将其设置为函数本身。