如何在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()
行,线程也开始了,我再也无法控制终端了。
代码格式化很好,我只是不能在这里正确格式化