数 使用Python写一个多线程代码。线程1用来往文件里写内容,线程2从文件里读内容。需要保持两个线程之间同步
时间: 2024-03-10 22:45:42 浏览: 124
以下是一个使用Python实现的多线程代码,线程1用来向文件里写内容,线程2从文件里读内容,并保持两个线程之间同步。
```python
import threading
# 创建一个线程锁,用于保证两个线程之间同步
lock = threading.Lock()
# 文件名
filename = "data.txt"
# 线程1:往文件中写内容
def write_thread():
global lock, filename
# 获取线程锁
lock.acquire()
# 打开文件,追加模式写入数据
with open(filename, "a") as f:
f.write("Hello World\n")
# 释放线程锁
lock.release()
# 线程2:从文件中读内容
def read_thread():
global lock, filename
# 获取线程锁
lock.acquire()
# 打开文件,读取所有行
with open(filename, "r") as f:
lines = f.readlines()
for line in lines:
print(line.strip())
# 释放线程锁
lock.release()
# 创建两个线程并启动
t1 = threading.Thread(target=write_thread)
t2 = threading.Thread(target=read_thread)
t1.start()
t2.start()
# 等待两个线程结束
t1.join()
t2.join()
```
在上述代码中,线程1使用`lock.acquire()`获取线程锁并往文件中写入数据,而线程2使用`lock.acquire()`获取线程锁并从文件中读取数据,以保证两个线程之间同步。在每个线程完成操作后,使用`lock.release()`释放线程锁。
需要注意的是,在多线程环境下,需要使用线程锁等机制来避免竞争条件和死锁等问题。
阅读全文