调用我的函数 start 并在 Python 2.7.8 上使用多处理模块时出现此错误。我使用的是 Mac OS 10.9.5。
The process has forked and you cannot use this CoreFoundation functionality safely.
You MUST exec(). Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_
COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
这是 Lattice 类下的代码。我的函数 sansfin 运行良好并且返回一个 bool 值,它只需要作为参数 self 和一个整数来循环。
def start(self):
if __name__ == '__main__':
self.run = True
p = Process(target=self.sansfin, args=(1000,))
p.start()
p.join()
def stop(self):
self.run = False
我对这个消息很迷茫。我在那里和其他地方没有发现任何有用的东西。有些人建议一个错误...
最佳答案
要修复此错误,您需要显式设置 multiprocessing
启动方法到 spawn
在 MacOS 上。这可以通过在 if __name__ == '__main__'
正下方添加以下内容来实现.例如:
import platform, multiprocessing
...
if __name__ == '__main__':
if platform.system() == "Darwin":
multiprocessing.set_start_method('spawn')
也可以看看:关于python - 多进程和错误进程已 fork ,您无法安全地使用此 CoreFoundation 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30669659/