我有一个奇异的应用程序,它使用多重处理来产生具有无限循环的进程。
该代码在ubuntu上运行良好-因为linux使用fork作为默认值-。问题在于,在Windows OS中,默认情况下会生成代码,因此在每次迭代中,该过程都会从头开始遍历代码,从而创建无限的kivy GUI实例。
我该如何解决这个问题?这就是我开始过程的方式:
def f(x):
while True:
print(x)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
问题由this kivy issue log解决
摘要
在Windows(不是Linux)上发布,使用multiprocessing.Manager时,kivy将反复创建一个新窗口
解决方案>>
[[添加冻结支持](https://docs.python.org/2/library/multiprocessing.html#multiprocessing.freeze_support),然后开始多个处理
示例
if __name__ == '__main__':
freeze_support()
Process(target=f).start()