scipy.weave.inline 的竞争条件

Race condition with scipy.weave.inline

最近,当使用 brian2 进行 运行 并行神经网络模拟时,我开始收到 SyntaxError。当它试图评估缓存文件中的代码行时,调用 scipy.weave.inline 会引发这些问题。

问题的完整描述和我对其原因的猜测是 here

是我之前提出的相关问题的 link,其中一个错误具有完整的堆栈跟踪。我对那个问题的回答只是提供了一个临时解决方案。 (一旦执行一组新的并行运行,就会重新引入语法错误。)

有没有一种简单的方法可以避免这种竞争情况?

这似乎是 scipy 中的一个已知错误:请参阅 this and this 关于 github 的讨论。这些讨论中提出了一些解决方法:

1) 执行单个 运行 脚本——以便填充缓存文件——然后并行执行其他 运行。并行 运行s 不会尝试重新填充缓存。

2) 从/tmp~/.python27_compiled做一个符号link。 (我不确定为什么会这样。)

3) 改为使用 cython