ホームページ > バックエンド開発 > Python チュートリアル > 文書化されていない Python の「ThreadPool」を並列処理に使用する必要があるのはどのような場合ですか?

文書化されていない Python の「ThreadPool」を並列処理に使用する必要があるのはどのような場合ですか?

Mary-Kate Olsen
リリース: 2024-12-12 17:45:15
オリジナル
155 人が閲覧しました

When Should I Use Python's Undocumented `ThreadPool` for Parallel Processing?

マルチプロセッシングにおけるスレッドベースのプーリング

マルチプロセッシング モジュールは、個別のプロセスを使用してタスクを並列化するための強力な「プール」クラスを提供します。ただし、このアプローチではプロセスの作成によりオーバーヘッドが発生します。実際の関数呼び出し中に GIL が解放される IO バウンド操作の場合、スレッドを使用するとパフォーマンスが向上します。

ThreadPool クラスの紹介

一般的な考えに反して、マルチプロセッシング モジュールは確かにスレッドベースのプール インターフェイスを提供します。この隠れた宝石は、multiprocessing.pool import ThreadPool からアクセスでき、スレッドを使用してタスクを並列化する便利な方法を提供します。

文書化されていないステータスにもかかわらず、ThreadPool クラスは、Python をラップするダミーの Process クラスを使用してマルチプロセッシング プール インターフェイスを実装します。スレッド。このダミーの Process クラスは、スレッドに基づいたマルチプロセッシング インターフェイス全体を提供する multiprocessing.dummy モジュール内に存在します。

使用例

ProcessPool と同様に、ThreadPool は次のことができます。マップを並列化するために使用されます関数:

import multiprocessing.pool

def long_running_func(p):
    c_func_no_gil(p)

p = multiprocessing.pool.ThreadPool(4)
xs = p.map(long_running_func, range(100))
ログイン後にコピー

注: ThreadPool クラスは、すべての場合において、特にタスクが大量の CPU 時間を必要とする場合、ProcessPool ほど効率的ではありません。

以上が文書化されていない Python の「ThreadPool」を並列処理に使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート