0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

並列化したプログラム全体のプログレスバーを表示させる

Last updated at Posted at 2024-04-21

並列化したプログラム全体のプログラスバーを表示させる

以前,Pythonのプログラムを並列化による高速化を実装した際に,全体の進捗状況が確認出来たら便利だな~と思って調べたのですが,ググっても日本語記事は出てきませんでした.

出てきても並列処理それぞれの進捗を表示させるみたいなのしかなかった…(なお,並列化した関数から値を返すとなったらなおさら)

なので,自分で実装したコードの例を備忘録として記事にしておこうと思いました.

ここでの並列化は multiprocessing を想定しており,全体としては主に三段構造になっています.
今回は例として0から10までのリストを作って,それらの二乗の値を返すプログラムにしています.
状況によって適宜変更して下さい.

使用するライブラリ

from multiprocessing import Pool #並列処理
from tqdm import tqdm

並列化させる関数

def func(param_list):
    param_list = [x**2 for x in param_list]
    return param_list

並列処理を実行する関数

def parallel_processing(param_list):
	with Pool(processes=10) as pool:
		results = []
		with tqdm(total=len(param_list)) as pbar:
			for result in pool.imap(func, param_list):
				results.append(result)
				pbar.update(1)
		return results

プログラム本体

param_list = [n for n in range(10)]
square_list = parallel_processing(param_list):

# 確認する
print(param_list)
print(square_list)

ここでは,processes で並列処理の数を10に設定しています.

pool の imap で関数 func とパラメータ param_list を渡して,それらと同じ順番で二乗した値を返します.

もしうまく動作しなかった場合はコメントしていただければ嬉しいです.

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?