Python-プーリングはすべてのコアを使用するわけではありません

ビニャミンも

Poolfrommultiprocessingパッケージ(from multiprocessing.dummy import Poolを使用していますテキストファイルを読み取り、将来の関数のために前処理する関数を作成しました。私は約20,000のそのようなテキストファイルを持っているので、プロセスを並列化したかったので、このためにプールを使用しました。コードを実行しているリモートサーバーに32個のコアがあるため、70個のプロセスを開こうとしました(これも試しませんでしたが、問題は残ります)。これがシステムモニターの外観です。

ここに画像の説明を入力してください

ご覧のとおり、32コアのうち16コアはまったく機能しません。

どんな助けでもいただければ幸いです。

zwer

コメントで述べたように、すべてのmultiprocessing.dummy構造は、テスト、デバッグ、プロファイリングなどに非常に役立つ通常のスレッドを使用してマルチプロセッシングインターフェイスをシミュレートすることを目的としています。または、公式ドキュメントにあるように:

multiprocessing.dummyのAPIを複製しますがmultiprocessingthreadingモジュールのラッパーにすぎません

Python(CPython)threadingは実際のシステムスレッドを使用するため、理論的には、スレッド化されたコードを異なるCPUで実行することが可能です。これは、恐ろしいGILにより、これらのスレッドの2つが同時に実行されることはありません。そのルールには例外があります。システムコールを抽象化し、イベント(I / Oなど)を待機するすべてのタスクは並行して実行できますが、処理がPythonドメインに移動すると、GILによってロックアウトされ、実行されません。 opt-codeカウンターがコンテキストを切り替えるまで実行を継続できます。

簡単に言うと、multiprocessingプールを介して複数のコアを利用する場合は、multiprocessing.dummy(他のdummyパッケージにも当てはまります)の適応と抽象化を使用せず、ルートmultiprocessingモジュール自体を使用します-あなたの場合はmultiprocessing.pool.Pool

ことではことを考えると、言っthreadingモジュールは、私は頻繁に自分自身を使用して見つけるのインターフェイスプールが付属していませんmultiprocessing.dummy.Pool(またはmultiprocessing.pool.ThreadPool共有メモリがより重要であるとき、I / O重いもの(すなわちGILによって制限されない)のための代わりに)共有処理と発生するオーバーヘッド。multiprocessing.pool.Poolファイルを取得するときに重い後処理を行わなければ、スイッチを切り替えても大きな違いに気付かない可能性があります。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Python forループは、リスト内のすべての要素を取得するわけではありません

分類Dev

PythonのStripメソッドはすべてをクリアするわけではありません

分類Dev

Python OpenGLは、四辺形のすべての三角形をレンダリングするわけではありません

分類Dev

Pythonを使用したSeleniumを使用したWebスクレイピング-すべての要素を取得するわけではありません

分類Dev

Pythonの美しいスープetsyスクレーパーがすべてのアイテムを集めているわけではありません

分類Dev

PythonのSelenium(Webdriver)は、GoogleAdWordsページのすべてのリンクを返すわけではありません

分類Dev

Pythonのsqlite3はすべての結果をフェッチするわけではありません

分類Dev

Pythonを使用してCSVファイルを分割すると、Excelのすべてのデータが表示されるわけではありません

分類Dev

再帰的なPython呼び出しは、すべてのオプションを検証するわけではありません

分類Dev

フラグ付きのPython re.subがすべてのオカレンスを置き換えるわけではありません

分類Dev

TypeError:Pythonスクリプト出力の文字列フォーマット中にすべての引数が変換されるわけではありません

分類Dev

Python書き込み関数がすべての画像を保存しているわけではありません

分類Dev

Python3:文字列のリスト。文字列は可変文字です(すべての位置にすべての文字があるわけではありません)

分類Dev

Python re.sub()がすべての一致を置き換えるわけではありません

分類Dev

TypeError:MySQLとPythonを使用した文字列フォーマット中にすべての引数が変換されるわけではありません

分類Dev

PythonリクエストPOSTには、送信されたすべてのデータが含まれているわけではありません

分類Dev

Pythonを使用したMYSQLへのデータのインポートの問題(エラーコード:「SQLステートメントですべてのパラメーターが使用されたわけではありません)

分類Dev

Pythonから呼び出されて挿入するSQLServerストアドプロシージャは、常にデータを格納するわけではありませんが、IDcoutnerをインクリメントします

分類Dev

SQLステートメントですべてのパラメーターが使用されたわけではありません(Python、MySQL)

分類Dev

MySQLとPython:SQLステートメントですべてのパラメーターが使用されたわけではありません

分類Dev

Pythonでitertoolsを使用して、重複せず、網羅的なリストの「組み合わせのグループ」を取得する方法はありますか?

分類Dev

Pythonの応答-すべてのリクエストが実行されたわけではありません

分類Dev

Pythonパンダのピボットテーブルがすべての列を返すわけではありません

分類Dev

PythonイメージのすべてのPIXEL(すべてのrgbコンポーネントではありません!)に操作を適用するにはどうすればよいですか(numpy、opencv、またはPILのいずれかを使用)?

分類Dev

すべてのファイルにPythonの要素があるわけではありませんが、複数のXMLを解析します

分類Dev

BlenderのPythonスクリプトでアクションキーフレームをコピーして貼り付ける方法はありますか?

分類Dev

pandas / pythonでDataFrameを転置しますが、すべての列を転置するわけではありません

分類Dev

pyqt5を使用してPythonコードをGUIに変換する方法は?(qtデザイナーや他のアプリの使用は禁止されています。自分でコーディングする必要があります)

分類Dev

Python 3で列挙型を反復処理するときに、すべての要素が表示されるわけではありません

Related 関連記事

  1. 1

    Python forループは、リスト内のすべての要素を取得するわけではありません

  2. 2

    PythonのStripメソッドはすべてをクリアするわけではありません

  3. 3

    Python OpenGLは、四辺形のすべての三角形をレンダリングするわけではありません

  4. 4

    Pythonを使用したSeleniumを使用したWebスクレイピング-すべての要素を取得するわけではありません

  5. 5

    Pythonの美しいスープetsyスクレーパーがすべてのアイテムを集めているわけではありません

  6. 6

    PythonのSelenium(Webdriver)は、GoogleAdWordsページのすべてのリンクを返すわけではありません

  7. 7

    Pythonのsqlite3はすべての結果をフェッチするわけではありません

  8. 8

    Pythonを使用してCSVファイルを分割すると、Excelのすべてのデータが表示されるわけではありません

  9. 9

    再帰的なPython呼び出しは、すべてのオプションを検証するわけではありません

  10. 10

    フラグ付きのPython re.subがすべてのオカレンスを置き換えるわけではありません

  11. 11

    TypeError:Pythonスクリプト出力の文字列フォーマット中にすべての引数が変換されるわけではありません

  12. 12

    Python書き込み関数がすべての画像を保存しているわけではありません

  13. 13

    Python3:文字列のリスト。文字列は可変文字です(すべての位置にすべての文字があるわけではありません)

  14. 14

    Python re.sub()がすべての一致を置き換えるわけではありません

  15. 15

    TypeError:MySQLとPythonを使用した文字列フォーマット中にすべての引数が変換されるわけではありません

  16. 16

    PythonリクエストPOSTには、送信されたすべてのデータが含まれているわけではありません

  17. 17

    Pythonを使用したMYSQLへのデータのインポートの問題(エラーコード:「SQLステートメントですべてのパラメーターが使用されたわけではありません)

  18. 18

    Pythonから呼び出されて挿入するSQLServerストアドプロシージャは、常にデータを格納するわけではありませんが、IDcoutnerをインクリメントします

  19. 19

    SQLステートメントですべてのパラメーターが使用されたわけではありません(Python、MySQL)

  20. 20

    MySQLとPython:SQLステートメントですべてのパラメーターが使用されたわけではありません

  21. 21

    Pythonでitertoolsを使用して、重複せず、網羅的なリストの「組み合わせのグループ」を取得する方法はありますか?

  22. 22

    Pythonの応答-すべてのリクエストが実行されたわけではありません

  23. 23

    Pythonパンダのピボットテーブルがすべての列を返すわけではありません

  24. 24

    PythonイメージのすべてのPIXEL(すべてのrgbコンポーネントではありません!)に操作を適用するにはどうすればよいですか(numpy、opencv、またはPILのいずれかを使用)?

  25. 25

    すべてのファイルにPythonの要素があるわけではありませんが、複数のXMLを解析します

  26. 26

    BlenderのPythonスクリプトでアクションキーフレームをコピーして貼り付ける方法はありますか?

  27. 27

    pandas / pythonでDataFrameを転置しますが、すべての列を転置するわけではありません

  28. 28

    pyqt5を使用してPythonコードをGUIに変換する方法は?(qtデザイナーや他のアプリの使用は禁止されています。自分でコーディングする必要があります)

  29. 29

    Python 3で列挙型を反復処理するときに、すべての要素が表示されるわけではありません

ホットタグ

アーカイブ