Pythonのマルチスレッドでデータを共有するにはどのようにしますか?
Python では、threading モジュールを使用してマルチスレッドデータ共有を実行できます。具体的には、以下の手順で行います。
- threading モジュールを読み込む: import threading
- データを共有するためにグローバル変数を定義します。
- 共有データを操作する際の排他制御用に、ロックオブジェクト(lock = threading.Lock())を作成する。
- 共有データの読み書きを行うスレッド関数を定義する。
- スレッド内のロックオブジェクトを使ってロックを獲得し、クリティカルセクションに入る。
- 共有データの読み書きを行う。
- ロックの解除、クリティカルセクションからの退出。
サンプルコードを以下に示します。
import threading
# 全局变量
shared_data = []
# 创建锁对象
lock = threading.Lock()
# 定义线程函数
def thread_func():
global shared_data
for i in range(10):
# 获取锁,进入临界区
lock.acquire()
# 对共享数据进行读写操作
shared_data.append(i)
# 释放锁,退出临界区
lock.release()
# 创建线程
thread1 = threading.Thread(target=thread_func)
thread2 = threading.Thread(target=thread_func)
# 启动线程
thread1.start()
thread2.start()
# 等待线程结束
thread1.join()
thread2.join()
# 打印共享数据
print(shared_data)
上の例では 2 つのスレッドが同時並列に shared_data に書き込んでおり、その共有データへの排他アクセスをロックオブジェクトを用いて実現しています。最後にプリントアウトされた shared_data のリストには、2 つのスレッドがそれぞれ書き込んだデータの両方が含まれるはずです。