ndarray.dot()函数在exec中挂起

时间:2017-01-18 14:11:04

标签: python python-2.7 python-3.x numpy

我在 exec()函数的Python 2.7和3.4中运行 ndarray.dot(类似数组的对象)时遇到问题 - python挂起,我需要关闭它。基于Numpy "dot" hangsmultiprocessing with numpy quits Python,这是一个已知问题。当使用多处理库时,python因死锁而挂起。

以下代码如何使用 exec()进行操作? exec()是否会创建一个新线程?有没有解决办法解决它?

实际代码更复杂,所以我需要使用exec()。

test_dot.py:

test_global_env = {
    '__builtins__': None,
    'np': numpy
}
test_local_env = {}
test = '''
result = np.array([[1, 2], [3, 4]]).dot([0.14, 0.1])
'''
if __name__ == '__main__':
    exec(test, test_global_env, test_local_env)

谢谢。

1 个答案:

答案 0 :(得分:1)

这可能是行'__builtins__': None,的问题。如果你评论这一行,你的代码将正常工作。顺便说一句。这条线的目的是什么?

exec不创建另一个线程,它在当前线程和任何其他函数中执行。其余的代码只是在继续之前等待exec完成。