python thread 共享数据
时间: 2023-09-13 10:08:48 浏览: 57
在 Python 中,线程之间可以共享数据。这可以通过使用共享变量或共享对象来实现。我来给你举个例子:
```python
import threading
# 共享变量
shared_data = 0
lock = threading.Lock()
# 线程函数
def increment():
global shared_data
for _ in range(100000):
# 获取锁
lock.acquire()
shared_data += 1
# 释放锁
lock.release()
# 创建线程
thread1 = threading.Thread(target=increment)
thread2 = threading.Thread(target=increment)
# 启动线程
thread1.start()
thread2.start()
# 等待线程结束
thread1.join()
thread2.join()
# 打印共享变量的值
print(shared_data)
```
在这个例子中,我们创建了两个线程,它们都会对共享变量 `shared_data` 进行递增操作。为了确保同时只有一个线程可以访问共享变量,我们使用了 `threading.Lock()` 来创建一个互斥锁。在每次访问共享变量之前,线程会通过 `lock.acquire()` 获取锁,在访问完成后通过 `lock.release()` 释放锁。
这样的话,多个线程就可以安全地共享一个变量了。
除了使用锁之外,还可以使用其他同步原语和数据结构,如条件变量、信号量、队列等来实现线程间的数据共享和同步。具体选择哪种方式取决于具体的需求和场景。