<p>我不知道这是否是最好的答案,但这是我目前的解决办法。
我检查了<code>lambdify</code>源代码,发现了一个<code>lambdastr</code>函数
生成的代码应该显示:</p>
<pre><code>from sympy.utilities.lambdify import lambdastr
lstr = lambdastr((x,y), L, dummify=True)
</code></pre>
<p>生成的代码<code>lstr</code>如下所示:</p>
^{pr2}$
<p>如果我只是将<code>numpy.matrix</code>导入为
<code>ImmutableMatrix</code>,但没有骰子:</p>
<pre><code># in parallel
# do imports and push our lambda function over
dview.execute('import numpy')
dview.execute('from numpy import matrix as ImmutableMatrix')
dview.push(dict(numer_L=numer_L))
p_result = dview.map_sync(lambda y: numpy.linalg.det(numer_L(3,y)), range(30))
</code></pre>
<p>失败,错误与以前相同。在</p>
<p>我通过将生成的代码作为一个字符串推送,并执行eval来实现它
我自己:</p>
<pre><code># in parallel
# do imports and push our lambda function over
dview.execute('import numpy')
dview.execute('from numpy import matrix as ImmutableMatrix')
dview.push(dict(lstr=lstr))
p_result = dview.map_sync(lambda y: numpy.linalg.det(eval(lstr)(3,y)), range(30))
</code></pre>
<p>这是有效的,并与按顺序计算的结果相匹配</p>
<pre><code>p_result == s_result # True
</code></pre>
<p>所以,我有点工作,但感觉不太对劲
可能是由于<code>lambdify</code>的工作方式。在</p>