我在 exec()函数的Python 2.7和3.4中运行 ndarray.dot(类似数组的对象)时遇到问题 - python挂起,我需要关闭它。基于Numpy "dot" hangs或multiprocessing 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)
谢谢。
答案 0 :(得分:1)
这可能是行'__builtins__': None,
的问题。如果你评论这一行,你的代码将正常工作。顺便说一句。这条线的目的是什么?
exec
不创建另一个线程,它在当前线程和任何其他函数中执行。其余的代码只是在继续之前等待exec
完成。