multiprocessing.Pool
マルチプロセッシング プール(標準ライブラリ)
意味 並列処理で作業を効率化
multiprocessing.Poolとは?
multiprocessing.Poolは、Pythonのマルチプロセス処理において、複数のプロセスをプールして管理し、それらに作業を効率的に割り当てるための仕組みです。 大量のデータに対して同じ処理を何度も行いたい場合に、multiprocessing.Poolを使うことで、簡単に並列処理を実装し、処理時間を大幅に短縮することができます。
multiprocessing.Poolの具体的な使い方
並列データ処理
import multiprocessing
import time
def process_data(number):
time.sleep(1) # 重い処理をシミュレート
return number ** 2
if __name__ == '__main__':
data = list(range(10))
# シングルプロセスでの処理
start_time = time.time()
single_result = [process_data(num) for num in data]
single_time = time.time() - start_time
# マルチプロセスでの処理
start_time = time.time()
with multiprocessing.Pool() as pool:
multi_result = pool.map(process_data, data)
multi_time = time.time() - start_time
print(f'結果: {multi_result}')
print(f'シングルプロセス処理時間: {single_time:.2f}秒')
print(f'マルチプロセス処理時間: {multi_time:.2f}秒')
print(f'高速化率: {single_time / multi_time:.2f}倍')
👇出力結果
結果: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
シングルプロセス処理時間: 10.01秒
マルチプロセス処理時間: 2.52秒
高速化率: 3.97倍
このコードは、multiprocessing.Poolを使用して、データの並列処理を行う例です。 process_data関数は、与えられた数値を2乗する処理を行います。time.sleep(1)で1秒の遅延を入れることで、重い処理をシミュレートしています。 メイン部分では、0から9までの数値リストに対して処理を行います。まず、シングルプロセスで処理を行い、その後multiprocessing.Poolを使用してマルチプロセスで同じ処理を行います。 pool.map()メソッドを使用することで、process_data関数をデータリストの各要素に対して並列に適用します。 最後に、両方の処理時間を比較し、マルチプロセス処理による高速化率を計算します。 この例では、CPUバウンドな処理を並列化することで、処理時間を大幅に短縮できることを示しています。特に、大量のデータに対して同じ処理を繰り返し適用する場合に、multiprocessing.Poolは非常に効果的です。
multiprocessing.Poolに関するよくある質問
Pythonのmultiprocessing.Poolについても学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Pythonのmultiprocessing.Poolやfunctools、pickle、tkinter、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。
Pythonを学べる「プログラミング単語帳」アプリ
プログラミング単語帳がアプリになりました!Pythonはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。
収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。
いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。
2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!
2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!