Multiprocessing not working with cmd2 module, import issue?
扩展此问题的解决方案多处理代码在导入时起作用,在调用时中断,我已将一些多处理代码注入到我的项目中,该项目已迅速中断。
我认为有进口问题。我有两个模块。
1 2 3 4 5 | print 'omnia praeclara' import multi4 if __name__ =="__main__": multi4.init_manager() print 'rara sunt' |
和
1 2 3 4 5 6 7 | import multiprocessing as mp def add(): print 2+2 def init_manager(): proc = mp.Process(target=add) proc.start() proc.join() |
现在,此代码可以正常工作。从命令行(Windows)运行时,它将产生以下内容:
1 2 3 4 5 | omnia praeclara omnia praeclara rara sunt 4 rara sunt |
这是可以预期的(在上面的链接中说明了双面打印)。
但是---当我像这样制作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | print 'omnia praeclara' import multi4 if __name__ =="__main__": multi4.init_manager() print 'rara sunt' import cmd2 class Prompt(cmd2.Cmd): def default(self, line): return cmd2.Cmd.default(self, line) prompt = '\ +++ ' intro = '\ by that remembered or with that forgot.' def do_exit(self, line): return True Prompt().cmdloop() |
我得到
1 2 3 4 5 | omnia praeclara omnia praeclara rara sunt by that remembered or with that forgot. +++ |
这是
1 2 3 4 5 6 | +++ exit 4 rara sunt by that remembered or with that forgot. +++ |
这样多处理代码完成了,但是现在我回到了cmd2提示符下!只有当我再次退出时,我才真正退出。
很显然,所有内容都被导入了两次。在上面的链接中引用了此方法,但是有什么方法可以避免这种情况?更重要的是,当我在
这是导致双重打印的相同问题-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | print 'omnia praeclara' import multi4 print 'rara sunt' import cmd2 class Prompt(cmd2.Cmd): def default(self, line): return cmd2.Cmd.default(self, line) prompt = '\ +++ ' intro = '\ by that remembered or with that forgot.' def do_exit(self, line): return True if __name__ =="__main__": multi4.init_manager() Prompt().cmdloop() |