2017-09-20 6 views
0

私はマルチプロセッシングライブラリのドキュメントをPythonで使っていました。目的の出力を与えないマルチプロセッシングの例python3

これは私が実行しようとしていますどのような例です。

from multiprocessing import Pool 

def f(x): 
    return x*x 

if __name__ == '__main__': 
    with Pool(5) as p: 
     print(p.map(f, [1, 2, 3])) 

例は、以下のリンクから取得されます:Multiprocessing Doc

上記のプログラムを実行している間、私は次のエラーを取得しています:

Process SpawnPoolWorker-1: 
Traceback (most recent call last): 
    File "C:\Python35\lib\multiprocessing\process.py", line 254, in _bootstrap 
    self.run() 
    File "C:\Python35\lib\multiprocessing\process.py", line 93, in run 
    self._target(*self._args, **self._kwargs) 
    File "C:\Python35\lib\multiprocessing\pool.py", line 108, in worker 
    task = get() 
    File "C:\Python35\lib\multiprocessing\queues.py", line 345, in get 
    return ForkingPickler.loads(res) 
AttributeError: Can't get attribute 'f' on <module '__main__' (built-in)> 
Process SpawnPoolWorker-3: 
Traceback (most recent call last): 
    File "C:\Python35\lib\multiprocessing\process.py", line 254, in _bootstrap 
    self.run() 
    File "C:\Python35\lib\multiprocessing\process.py", line 93, in run 
    self._target(*self._args, **self._kwargs) 
    File "C:\Python35\lib\multiprocessing\pool.py", line 108, in worker 
    task = get() 
Process SpawnPoolWorker-5: 
    File "C:\Python35\lib\multiprocessing\queues.py", line 345, in get 
    return ForkingPickler.loads(res) 
Traceback (most recent call last): 
    File "C:\Python35\lib\multiprocessing\process.py", line 254, in _bootstrap 
    self.run() 
    File "C:\Python35\lib\multiprocessing\process.py", line 93, in run 
    self._target(*self._args, **self._kwargs) 
    File "C:\Python35\lib\multiprocessing\pool.py", line 108, in worker 
    task = get() 
    File "C:\Python35\lib\multiprocessing\queues.py", line 345, in get 
    return ForkingPickler.loads(res) 
AttributeError: Can't get attribute 'f' on <module '__main__' (built-in)> 
AttributeError: Can't get attribute 'f' on <module '__main__' (built-in)> 

また、プロセスも終了しません。 Enterキーを押すと、pythonがクラッシュしますが、プログラムはまだオンになっています。

問題を解決するために必要なことを教えてください。

+0

あなたのプログラムを保存したファイルの名前は何ですか? –

+0

私はプログラムをファイルに保存しました。私は直接Pythonシェルからプログラムを実行しました。 –

+0

あなたのプログラムを保存したファイルの名前は何ですか? –

答えて

1

Pythonマルチプロセッシングは、別のPythonプロセス(つまり、別のインタプリタインスタンス)でプログラムを再度ロードすることによって機能します。

multiprocessingをREPLから直接使用しようとしていますが、他のプロセスがロードするファイルがないため、コードを入力すると動作しません。

コードをファイルに保存する必要があります。

+0

はい..それは助けてくれてありがとうございました。 –

関連する問題