Python线程不开始

时间:2016-01-25 15:45:48

标签: python multithreading

我正在尝试创建具有将在后台执行某些操作的函数的类。我用Google搜索并查看了所有示例,我仍然感到困惑,为什么我的后台线程一直在运行,它永远不会停止... 我想要的是我的后台线程开始,3秒后我的主线程应该改变变量值,后台线程应该停止。这是我班级的简化示例:

from threading import Thread
import time

class ThreadingExample(object):

    def __init__(self):
        self._stop = False
        self._thread = Thread(target=self.run())
        self._thread.daemon = True
        self._thread.start()

    def run(self):
        while self._stop == False:
            print("doing something")
            time.sleep(1)

    def stop_run(self):
        print("stop doing!")
        self._stop = True

example = ThreadingExample()
time.sleep(3)
example.stop_run()
print('Bye')

1 个答案:

答案 0 :(得分:3)

self._thread = Thread(target=self.run)

你必须传递目标(函数对象)而不执行它,因为执行是主线程中的无限循环,你永远不会回到有机会打电话给stop_run以停止执行。