全局变量
使用全局变量可以在多个线程中访问和修改数据。
注意:在多线程中对全局变量的读写操作可能会出现竞争条件,因此需要使用锁来保护访问。
锁(Lock)
使用`threading.Lock`或`threading.RLock`来创建锁,确保在某一时刻只有一个线程可以访问共享数据。
条件变量(Condition)
使用`threading.Condition`类来实现条件变量,允许线程在等待某些条件发生时被阻塞,并在条件满足时被唤醒。
事件(Event)
使用`threading.Event`类来实现事件通信,一个线程可以通过`set`方法设置事件为真,其他等待该事件的线程可以通过`wait`方法等待事件发生。
信号量(Semaphore)
使用`threading.Semaphore`类来实现信号量机制,用于控制多个线程对共享资源的访问。
队列(Queue)
使用`queue.Queue`或其他队列模块来创建线程安全的队列,多个线程可以通过队列来共享数据。
共享内存
使用`multiprocessing`模块中的`Value`或`Array`来创建共享内存对象,多个线程可以同时访问和修改这些共享内存对象。
下面是一个使用锁来保护共享变量访问的简单示例:

```python
import threading
共享变量
counter = 0
创建锁对象
lock = threading.Lock()
def increment():
global counter
for _ in range():
对共享变量加锁
with lock:
counter += 1
创建两个线程
thread1 = threading.Thread(target=increment)
thread2 = threading.Thread(target=increment)
启动线程
thread1.start()
thread2.start()
等待线程结束
thread1.join()
thread2.join()
打印最终结果
print("Counter:", counter)
在这个例子中,我们定义了一个全局变量`counter`,并创建了两个线程来对其进行操作。`increment`函数会循环次,并在每次循环中使用`with lock`语句对共享变量进行加锁,以确保在修改共享变量时不会发生竞争条件。请根据您的具体需求选择合适的方法来实现多线程数据共享
