进程中的python-无限循环会导致kivy实例生成forverer



我有一个使用多处理来生成具有无限循环的进程的 kivy 应用程序。

该代码在 ubuntu 上运行良好 - 因为 linux 使用分叉作为默认值。问题在于,在Windows操作系统中,生成是默认设置,因此每次迭代时,该过程都会从头开始遍历代码,从而创建无限的kivy GUI实例。

如何解决这个问题?这是我开始我的过程的方式:

def f(x):
while True:
print(x)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()

注意:我不使用 p.join((,因为函数永远不会结束。

此问题已通过此 kivy 问题日志解决

总结

在窗口(不是 Linux(上,多处理时出现问题。使用管理器,kivy会反复创建一个新窗口

溶液

[添加冻结支持](https://docs.python.org/2/library/multiprocessing.html#multiprocessing.freeze_support(在开始多个处理之前

if __name__ == '__main__':
freeze_support()
Process(target=f).start()

补充背景

Python多处理在Mohammed Baashaar提到的Linux和Windows下是不同的(见评论(

如果只是添加freeze_support失败,您需要在导入 if 名称 == 主保护下的 kivy 之前导入多处理和冻结支持。

更多详情请见此处: https://github.com/kivy/kivy/issues/4744

最新更新