python多线程加锁用代码举例说明
时间: 2023-07-17 12:11:03 浏览: 99
对Python多线程读写文件加锁的实例详解
当使用Python的多线程编程时,为了避免多个线程同时访问共享资源而导致数据不一致或冲突的问题,可以使用锁(Lock)机制来确保线程之间的互斥访问。下面是一个简单的示例代码,演示了如何在多线程中使用锁:
```python
import threading
# 共享资源
shared_resource = 0
# 创建一个锁对象
lock = threading.Lock()
# 线程函数
def thread_func():
global shared_resource
# 获取锁
lock.acquire()
try:
# 访问共享资源
shared_resource += 1
print(f"Thread {threading.current_thread().name}: shared_resource = {shared_resource}")
finally:
# 释放锁
lock.release()
# 创建多个线程
threads = []
for i in range(5):
thread = threading.Thread(target=thread_func)
threads.append(thread)
thread.start()
# 等待所有线程执行完毕
for thread in threads:
thread.join()
```
在上述代码中,我们首先导入了`threading`模块,并创建了一个名为`shared_resource`的共享资源,初始值为0。然后,我们使用`threading.Lock()`创建了一个锁对象`lock`。
在线程函数`thread_func()`中,首先通过`lock.acquire()`来获取锁,表示这个线程要开始访问共享资源。然后,在`try-finally`语句块中进行共享资源的访问和操作,这里只是简单地对`shared_resource`进行加1的操作,并打印出线程名和共享资源的值。最后,使用`lock.release()`释放锁,表示该线程已经完成对共享资源的访问。
在主程序中,我们创建了5个线程,并使用`thread.start()`启动它们。然后,使用`thread.join()`等待所有线程执行完毕。
通过使用锁机制,我们确保了在任意时刻只有一个线程可以访问共享资源,从而避免了数据竞争和冲突的问题。
阅读全文