Python线程没有从父线程中断

时间:2011-07-22 22:27:20

标签: python multithreading

问题:为什么我的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,它在我的程序的先前版本上工作)我应该看到正在创建一个新线程,但仍然只有一个线程。

任何人都知道为什么我这里只有一个线程而不是两个?感谢。

1 个答案:

答案 0 :(得分:4)

您应该调用start,在单独的线程中运行run方法。否则run被称为任何其他方法。

来自docs: 创建线程对象后,必须通过调用线程的start()方法启动其活动。这将在一个单独的控制线程中调用run()方法。