2017-01-18 1 views
0

でハング - Pythonのハングを、私は閉じる必要がありますそれ。 Numpy "dot" hangsまたはmultiprocessing with numpy quits Pythonに基づいて、これは既知の問題です。マルチプロセッシングライブラリを使用すると、デッドロックのためにPythonがハングします。ndarray.dotは()関数は、私は、Python 2.7で3.4 <em>のexec()</em>機能のいずれか<em>ndarray.dot(配列のようなオブジェクト)</em>を実行するための問題持っている幹部

を使用して以下のコードを実行する方法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

これはおそらく、'__builtins__': None,という行に問題があります。この行をコメントアウトすると、コードは正常に動作します。 Btw。この行の目的は何ですか?

execは、別のスレッドを作成せず、現在のスレッドやその他の関数で実行されます。コードの残りの部分は、execが完了するまで単に待つだけです。

+0

大丈夫です。私はさまざまなPythonコードを実行するための "IDE"/"sandbox"を作成しているので、ユーザが組み込み関数のすべての関数やクラスを使用できるようにすることはできません。 min、max、tuple、dict、range、iter、isinstance、enumerate、iterのような関数だけを許可したい。しかし、__import__を許可したくありません。 – regiea

+0

まあ、すべてがうまくいくかどうか分からないのですが、実行するためにあなたが呼び出すコードがバックグラウンドで何らかのインポートを必要とするとしたらどうでしょう?(例えば 'np.dot()'が何かをインポートするとどういう意味ですか? –

関連する問題

 関連する問題