问题:为什么我的DAL没有在自己的线程上运行?
我已经有了这个程序,我一直在努力实现一个简单的文件管理器后端。这与我第一次使用线程的经历相差甚远,但由于某种原因,我无法让这个工作。我在这里实例化我的DAL:
self.DAL = DAL(path)
##prepare the reactor
self.DALrec = threading.Thread(target=self.DAL.reactor,name='DALReactor')
self.DALrec.run()
反应堆里面有这个:
def reactor(self):
while not self.kill:
##check for new entries:
for i in self.ins:
self.save(i)
##wait a minute before checking again.
time.sleep(60)
并不复杂。我实例化DAL,它顺便说一句,然后实例化一个线程,就像我一直做的那样。但由于某种原因,我正在从中获得真正的市场行为。它不是调用'run'而主线程继续将线程留给自己的业务,而是将'run'视为从主线程调用self.DAL.reactor()
。在我的调试器(winpdb,它在我的程序的先前版本上工作)我应该看到正在创建一个新线程,但仍然只有一个线程。
任何人都知道为什么我这里只有一个线程而不是两个?感谢。
答案 0 :(得分:4)
您应该调用start,在单独的线程中运行run
方法。否则run
被称为任何其他方法。
来自docs: 创建线程对象后,必须通过调用线程的start()方法启动其活动。这将在一个单独的控制线程中调用run()方法。