Python のマルチスレッドを使用して、ループの各要素を別々に処理する方法
Pythonのthreadingモジュールで、ループの要素データを別々に処理するマルチスレッドを実現できます。コード例を次に示します。
import threading
def process_data(data):
# 处理数据的函数
print("Processing:", data)
data_list = ['data1', 'data2', 'data3'] # 要处理的数据列表
# 创建一个线程锁
lock = threading.Lock()
def process_data_thread(data):
with lock:
process_data(data)
# 创建线程列表
threads = []
# 遍历数据列表,为每个数据创建一个线程并启动
for data in data_list:
t = threading.Thread(target=process_data_thread, args=(data,))
t.start()
threads.append(t)
# 等待所有线程结束
for t in threads:
t.join()
コード内のprocess_dataという関数は、データ処理のための関数として定義されています。そして、data_listというデータのリストが作成されており、ここで処理されるデータが指定されています。
多スレッドで関数process_dataへのアクセスを制御するためのスレッドロックlockを作成しました。その後、ロックを取得した後にprocess_data関数を呼び出してデータを処理するprocess_data_thread関数を定義しました。
次に、スレッドリスト「threads」を作成します。そして、データリストをループして、各データに対してスレッドを作成し、スレッドリストに追加します。ループの中では、スレッドが作成されるたびに起動します。
最後に、他のループを用いて全てのスレッドの終了を待ち、全てのデータが処理されることを保証する。