ジェネレーター関数を使用したPythonマルチプロセッシングモジュールの使用中にエラーが発生しました。

マヌー

誰かが以下のコードの何が問題になっているのか説明できますか

from multiprocessing import Pool
def sq(x):
    yield x**2
p = Pool(2)

n = p.map(sq, range(10))

次のエラーが発生します

MaybeEncodingError Traceback(最後の最後の呼び出し)in()5 p = Pool(2)6 ----> 7 n = p.map(sq、range(10))

返されるリスト内のmap(self、func、iterable、chunksize)258の/home/devil/anaconda3/lib/python3.4/multiprocessing/pool.py。259 '' '-> 260 return self._map_async(func、iterable、mapstar、chunksize).get()261 262 def starmap(self、func、iterable、chunksize = None):

/home/devil/anaconda3/lib/python3.4/multiprocessing/pool.py in get(self、timeout)606 return self._value 607 else:-> 608 raise self._value 609610 def _set(self、i、 obj):

MaybeEncodingError:結果の送信中にエラーが発生しました: '[、]'。理由: 'TypeError( "ジェネレータオブジェクトをピクルできません"、)'

よろしくお願いします。

Jean-Francois Fabre

ここでは、ジェネレータはなく関数を使用する必要があります。手段:関数に変換するために変更ます。ジェネレーターでは動作しません。yieldreturnsqPool

さらに、Windowsで動作するバージョンを作成しようとすると、奇妙な繰り返しエラーメッセージが表示されました。

Attempt to start a new process before the current process
has finished its bootstrapping phase.

This probably means that you are on Windows and you have
forgotten to use the proper idiom in the main module:

if __name__ == '__main__':

それは自明なので、私が得たコメントを文字通り引用します:

Windowsでのエラーは、各プロセスがpythonファイルなどを解釈する新しいpythonプロセスを生成するため、「ifmainblock」以外のすべてが再度実行されるためです。

したがって、移植可能にするために、__name__=="__main__"このモジュールを実行するときに使用する必要があります。

from multiprocessing import Pool

def sq(x):
    return x**2

if __name__=="__main__":
    p = Pool(2)
    n = p.map(sq, range(10))
    print(n)

結果:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

編集:事前に値を保存したくない場合は、次を使用できます imap

n = p.imap(sq, range(10))

nはジェネレータオブジェクトになりました。値を消費する(そして実際の処理をアクティブにする)ために、リストを強制的に反復すると、上記と同じ結果が得られます。

print(list(n))

ドキュメントはそれimapがよりもはるかに遅いことを示していることに注意してくださいmap

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

マルチモジュールプロジェクトでLicenseMavenプラグインを使用中にエラーが発生しました

分類Dev

Cythonでマルチプロセッシングを使用中にエラーが発生しました

分類Dev

pexpectとマルチプロセッシングの使用中にエラーが発生しましたか?エラー「TypError: '_ io.TextIOWrapper'オブジェクトをシリアル化できません」

分類Dev

Mavenマルチモジュールプロジェクトの依存関係の解決中にエラーが発生しました

分類Dev

Pythonを使用して別のモジュールに関数の戻り値をインポートするときにエラーが発生しました

分類Dev

関連するタイプとジェネリックの使用中にエラーが発生しました

分類Dev

マルチプロセッシングでpool.mapを使用しているときにピクルスエラーが発生しました

分類Dev

Googleスプレッドシートを使用してBigQueryAPIを使用すると、「ファイルパターンのグロブ中にエラーが発生しました」エラーが発生しました

分類Dev

マルチプロセッシングを使用したpyserialでctypeエラーが発生する

分類Dev

ログインエラー:このアプリケーションへのログイン中にエラーが発生しました。後でAndroidモジュールのフラッターで再試行してください

分類Dev

PythonとPlyパーサジェネレータの使用中にエラーが発生しました

分類Dev

コンシューマウィジェット(プロバイダーパッケージ)内のナビゲーターで置換をプッシュしようとすると、「ビルド中にsetState()またはmarkNeedsBuild()が呼び出されました」エラーが発生しました

分類Dev

カスタムメッセージハンドラチュートリアルでデモを試行中にJIRAエラーが発生しました

分類Dev

カーネルモジュールのコンパイル中にエラーが発生しました

分類Dev

マルチプロセッシングライブラリの使用中にエラーが発生しました:「キーワード引数 'x'に複数の値があります」

分類Dev

ジェネリック関数where句でSelfを使用中にエラーが発生しました

分類Dev

ジェネリック関数where句でSelfを使用中にエラーが発生しました

分類Dev

Python:パラメーターを使用したマルチプロセッシング関数

分類Dev

GPUを使用してテンソルフローサービングモデルをkubernetesにデプロイしているときに、ポッドのスケジュールできないエラーが発生しました

分類Dev

ansible:partedモジュールを使用して16個のパーティションを作成中にエラーが発生しました

分類Dev

AndroidLollipopのプロビジョニング中にチェックサムエラーが発生しました

分類Dev

Python用のdjangoモジュールのインストール中にエラーが発生しました

分類Dev

モジュールtsにプロバイダーを入力中にエラーが発生しました

分類Dev

マルチプロセッシングによりPythonがクラッシュし、fork()が呼び出されたときに別のスレッドでエラーが発生していた可能性があります

分類Dev

Pythonモジュールのインストール中にVC ++エラーが発生しました

分類Dev

モジュール 'index'をインポートできません:claudia.jsの使用中にawsクラウドウォッチログでエラーが発生しました

分類Dev

Azureパイプラインを使用したS3へのRDSデータベースのバックアップ、エラーSQLPowershellモジュールがエージェントマシンにインストールされていません。

分類Dev

マルチプロセッシングでファイルへの書き込み中にエラーが発生しました

分類Dev

Pythonマルチプロセッシングモジュールはランタイムエラーを発生させるプロセスを処理し、何もしません

Related 関連記事

  1. 1

    マルチモジュールプロジェクトでLicenseMavenプラグインを使用中にエラーが発生しました

  2. 2

    Cythonでマルチプロセッシングを使用中にエラーが発生しました

  3. 3

    pexpectとマルチプロセッシングの使用中にエラーが発生しましたか?エラー「TypError: '_ io.TextIOWrapper'オブジェクトをシリアル化できません」

  4. 4

    Mavenマルチモジュールプロジェクトの依存関係の解決中にエラーが発生しました

  5. 5

    Pythonを使用して別のモジュールに関数の戻り値をインポートするときにエラーが発生しました

  6. 6

    関連するタイプとジェネリックの使用中にエラーが発生しました

  7. 7

    マルチプロセッシングでpool.mapを使用しているときにピクルスエラーが発生しました

  8. 8

    Googleスプレッドシートを使用してBigQueryAPIを使用すると、「ファイルパターンのグロブ中にエラーが発生しました」エラーが発生しました

  9. 9

    マルチプロセッシングを使用したpyserialでctypeエラーが発生する

  10. 10

    ログインエラー:このアプリケーションへのログイン中にエラーが発生しました。後でAndroidモジュールのフラッターで再試行してください

  11. 11

    PythonとPlyパーサジェネレータの使用中にエラーが発生しました

  12. 12

    コンシューマウィジェット(プロバイダーパッケージ)内のナビゲーターで置換をプッシュしようとすると、「ビルド中にsetState()またはmarkNeedsBuild()が呼び出されました」エラーが発生しました

  13. 13

    カスタムメッセージハンドラチュートリアルでデモを試行中にJIRAエラーが発生しました

  14. 14

    カーネルモジュールのコンパイル中にエラーが発生しました

  15. 15

    マルチプロセッシングライブラリの使用中にエラーが発生しました:「キーワード引数 'x'に複数の値があります」

  16. 16

    ジェネリック関数where句でSelfを使用中にエラーが発生しました

  17. 17

    ジェネリック関数where句でSelfを使用中にエラーが発生しました

  18. 18

    Python:パラメーターを使用したマルチプロセッシング関数

  19. 19

    GPUを使用してテンソルフローサービングモデルをkubernetesにデプロイしているときに、ポッドのスケジュールできないエラーが発生しました

  20. 20

    ansible:partedモジュールを使用して16個のパーティションを作成中にエラーが発生しました

  21. 21

    AndroidLollipopのプロビジョニング中にチェックサムエラーが発生しました

  22. 22

    Python用のdjangoモジュールのインストール中にエラーが発生しました

  23. 23

    モジュールtsにプロバイダーを入力中にエラーが発生しました

  24. 24

    マルチプロセッシングによりPythonがクラッシュし、fork()が呼び出されたときに別のスレッドでエラーが発生していた可能性があります

  25. 25

    Pythonモジュールのインストール中にVC ++エラーが発生しました

  26. 26

    モジュール 'index'をインポートできません:claudia.jsの使用中にawsクラウドウォッチログでエラーが発生しました

  27. 27

    Azureパイプラインを使用したS3へのRDSデータベースのバックアップ、エラーSQLPowershellモジュールがエージェントマシンにインストールされていません。

  28. 28

    マルチプロセッシングでファイルへの書き込み中にエラーが発生しました

  29. 29

    Pythonマルチプロセッシングモジュールはランタイムエラーを発生させるプロセスを処理し、何もしません

ホットタグ

アーカイブ