我正在尝试创建具有将在后台执行某些操作的函数的类。我用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')
答案 0 :(得分:3)
self._thread = Thread(target=self.run)
你必须传递目标(函数对象)而不执行它,因为执行是主线程中的无限循环,你永远不会回到有机会打电话给stop_run
以停止执行。