在Python中进行线程化,由其他线程进行控制

时间:2016-03-03 19:08:01

标签: python multithreading python-multithreading

如何在Python中正确地多线程?

我正在尝试使用threading库将简单的fork机制更改为解决方案(我认为forks会导致一些问题,所以我试图替换它们)

class CustomConsole(cmd.Cmd):
    db = DatabaseControl()
    bot = Bot(db)
    addPoints = AddPointsToActiveUsers(db)
    def do_startbot(self, args):
        botThread = threading.Thread(target=self.bot.mainLoop(),
                                     name='BotThread')
        botThread.daemon = True
        botThread.start()

    def do_startpoints(self, args):
        pointsThread = threading.Thread(target=self.addPoints.addPoints(), 
                                        name='PointsThread')
        pointsThread.daemon = True
        pointsThread.start()

if __name__ == '__main__':
    CustomConsole().cmdloop()

两个对象里面都有无限循环,但是当我启动其中一个并且我无法启动另一个时,因为线程似乎正在控制终端。

我认为自定义控制台可能存在问题,但我不知道如何不控制终端到线程,而是将其留给主线程并在后台运行。

另外我不知道为什么,但即使我删除了objects.start()行,线程也开始了,我再也无法控制终端了。

代码格式化很好,我只是不能在这里正确格式化

0 个答案:

没有答案