编写一个程序,其中有两个线程。第一个线程每隔1秒打印"Ping",第二个线程每隔1秒打印"Pong"。使用线程信号量确保"Ping"和"Pong"交替打印。
时间: 2024-10-10 14:07:47 浏览: 8
为了编写这样一个程序,我们可以使用Python的`threading`库和`threading.Semaphore`来管理信号量。信号量可以限制同时访问资源的线程数量。以下是使用信号量实现交替打印的简单示例:
```python
import time
from threading import Semaphore, Thread
# 初始化信号量,值为1表示只有一个线程可以打印
ping_pong_semaphore = Semaphore(1)
def ping():
while True:
ping_pong_semaphore.acquire() # 获取信号量,开始打印
print("Ping")
time.sleep(1) # 睡眠1秒
ping_pong_semaphore.release() # 打印完毕,释放信号量给Pong
def pong():
while True:
ping_pong_semaphore.acquire() # 获取信号量,开始打印
print("Pong")
time.sleep(1) # 睡眠1秒
ping_pong_semaphore.release() # 打印完毕,释放信号量
# 创建并启动线程
ping_thread = Thread(target=ping)
pong_thread = Thread(target=pong)
ping_thread.start()
pong_thread.start()
# 等待线程结束
ping_thread.join()
pong_thread.join()
阅读全文