我计划创建一个聊天机器人抽搐.tv在Python中。我想为不同的主要功能使用多个进程(一个用于bot本身,另一个用于GUI)。每个进程都应该以变量的形式引用其他进程。我还没有开始编写bot本身的代码,但是我用一个小例子测试了多重处理。你知道吗
主文件:
from BotProcess import botProcess
from GuiProcess import guiProcess
botProcess = botProcess()
guiProcess = guiProcess()
botProcess.guiProcess = guiProcess
guiProcess.botProcess = botProcess
botProcess = botProcess()
guiProcess = guiProcess()
botProcess.guiProcess = guiProcess
guiProcess.botProcess = botProcess
botProcess.start()
guiProcess.start()
进程文件:
class botProcess(multiprocessing.Process):
guiProcess = ""
def run(self):
# Run Bot
def someOtherMethod(self):
# doSomething
gui进程文件:
class guiProcess(multiprocessing.Process):
botProcess = ""
def run(self):
# Display GUI
botProcess.someOtherMethod();
每次尝试在另一个进程上运行方法时,都会收到以下错误消息:
AttributeError: 'NoneType' object has no attribute 'someOtherMethod'
有没有简单的方法来解决这个问题?或者我应该尝试其他方法(例如线程)而不是多处理?你知道吗
我留下了一条评论,为什么我认为你应该使用线程模块而不是多处理,但是如果你想坚持多处理,我认为你的问题是: 首先,应该切换变量名,使它们与类不同。你知道吗
使用好的变量名不仅可以帮助其他人阅读您的代码,还可以避免任何意外的运行时和语法错误。 第二,这样做:
是多余的。你只是把同样的变量赋给同样的东西两次。你知道吗
第三,也许你真正想要的是,你在你的类中拥有的不是你想要的成员。以下是您应该拥有的:
(另一个班级也是如此) 然后在主文件中:
现在,其他\u gui \u进程和其他\u bot \u进程是类的成员,可以访问它们的实例。以前它们只是局部变量,只能在定义它们的类中使用。你知道吗
相关问题 更多 >
编程相关推荐