python多线程线程锁
时间: 2023-07-09 15:34:28 浏览: 66
在Python中,线程锁是一种用于保护共享资源的同步机制,可以确保同一时刻只有一个线程访问共享资源,避免多个线程同时修改数据而导致数据不一致的问题。下面是一个使用线程锁的示例:
```python
import threading
# 定义一个共享资源,初始值为0
shared_resource = 0
# 定义一个线程锁
lock = threading.Lock()
# 定义一个线程函数,用于修改共享资源的值
def update_shared_resource():
global shared_resource
# 获取线程锁
lock.acquire()
# 修改共享资源的值
shared_resource += 1
# 释放线程锁
lock.release()
# 创建多个线程,同时访问共享资源
threads = []
for i in range(10):
thread = threading.Thread(target=update_shared_resource)
threads.append(thread)
# 启动多个线程
for thread in threads:
thread.start()
# 等待所有线程执行完毕
for thread in threads:
thread.join()
# 输出共享资源的最终值
print("Shared resource: ", shared_resource)
```
在上面的示例中,定义了一个共享资源`shared_resource`和一个线程锁`lock`。在`update_shared_resource()`函数中,先获取线程锁,然后修改共享资源的值,最后释放线程锁。在创建多个线程时,每个线程都会调用`update_shared_resource()`函数来修改共享资源的值,但是由于使用了线程锁,每次只有一个线程能够获得线程锁并修改共享资源的值,其他线程需要等待线程锁释放才能继续执行。
注意,获取线程锁后,需要在适当的时候释放线程锁,否则会导致死锁等问题。在上面的示例中,使用了`lock.acquire()`获取线程锁,并在`lock.release()`处释放线程锁。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)