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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-12 17:45:15156ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。