python多线程问题例子
时间: 2025-01-03 15:14:18 浏览: 9
### Python 多线程问题示例
#### 创建并启动多个线程
为了展示如何创建和管理多个线程,在下面的例子中,将定义两个不同的函数分别模拟接收数据和发送数据的过程。通过`threading.Thread`类实例化对象,并传入目标函数及其参数。
```python
from threading import Thread
import time
def send_data(message, interval):
"""模拟发送消息"""
while True:
print(f"正在发送: {message}")
time.sleep(interval)
def receive_data():
"""模拟接收消息"""
count = 0
while True:
print("接收到的数据:", count)
count += 1
time.sleep(2)
send_thread = Thread(target=send_data, args=("测试信息", 1))
receive_thread = Thread(target=receive_data)
send_thread.start()
receive_thread.start()
print("主线程继续执行其他任务...")
time.sleep(5) # 主线程等待一段时间后再结束子线程
```
此代码片段展示了如何并发地处理不同类型的IO密集型任务[^2]。
#### 使用锁机制解决竞态条件
当多个线程试图同时访问共享资源时可能会发生竞争状况。为了避免这种情况下的错误行为,可以引入互斥锁(`Lock`)来保护临界区内的代码段不被干扰。
```python
from threading import Lock, Thread
lock = Lock()
shared_resource = []
def add_to_list(item):
global shared_resource
with lock: # 确保同一时刻只有一个线程能进入该区域
temp_copy = list(shared_resource)
temp_copy.append(item)
shared_resource[:] = temp_copy
threads = []
for i in range(10):
t = Thread(target=add_to_list, args=(i,))
threads.append(t)
t.start()
for thread in threads:
thread.join()
print("最终列表:", shared_resource)
```
这段代码说明了如何利用锁定机制防止多线程环境中的数据冲突[^1]。
阅读全文