Python 使用scipy.weave.inline的比赛条件

Python 使用scipy.weave.inline的比赛条件,python,parallel-processing,scipy,race-condition,Python,Parallel Processing,Scipy,Race Condition,最近,当使用brian2运行并行神经网络模拟时,我开始收到SyntaxErrors。当它试图计算缓存文件中的代码行时,调用scipy.weave.inline会引发这些问题 问题的完整描述和我对其原因的猜测是 这是一个链接,指向我之前问过的一个相关问题,其中一个错误有完整的stacktrace。我对这个问题的回答只是一个暂时的解决办法。(一旦执行一组新的并行运行,就会重新引入语法错误。) 有没有一种简单的方法可以避免这种竞争状况?这似乎是scipy中的一个已知错误:请参阅github上的讨论。在

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

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

这是一个链接,指向我之前问过的一个相关问题,其中一个错误有完整的stacktrace。我对这个问题的回答只是一个暂时的解决办法。(一旦执行一组新的并行运行,就会重新引入语法错误。)


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

这似乎是
scipy
中的一个已知错误:请参阅
github
上的讨论。在这些讨论中提出了一些解决办法:

1) 执行该脚本的一次运行——以填充缓存文件——然后并行执行其他运行。并行运行不会尝试重新填充缓存

2) 创建一个从
/tmp
~/.python27\u编译的
的符号链接。(我不知道为什么这会起作用。)


3) 使用
cython

只是为了澄清,这是一个运行时
SyntaxError
,由用户代码抛出,而不是python解释器?@amccormack解释器引发错误——即,my code和
brian2
scipy
都没有显式引发错误。它发生在
scipy.weave
中调用
eval(line)
时,其中
line
是一个缓存文件中的一行。我对scipy一无所知,因此无法深入了解如何避免实际问题。
eval
意味着它是基于动态生成的代码,这正是我试图澄清的,这样我们就可以排除.py文件实际上存在错误。@amccormack啊,是的,我认为错误指向缓存文件中存在垃圾。(我在这里没有提到,但这是我链接到的一个问题:
SyntaxError
在我删除缓存并运行脚本的单个实例时消失了,也就是说,没有并行化。)