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」を作成します。そして、データリストをループして、各データに対してスレッドを作成し、スレッドリストに追加します。ループの中では、スレッドが作成されるたびに起動します。

最後に、他のループを用いて全てのスレッドの終了を待ち、全てのデータが処理されることを保証する。

bannerAds