使用多线程完成 三个窗口同时卖票
时间: 2023-06-26 22:03:28 浏览: 97
可以使用 Python 的 threading 模块来实现多线程卖票。下面是一个简单的示例代码:
```python
import threading
ticket_num = 100 # 总票数
lock = threading.Lock() # 创建锁对象,用于线程同步
# 卖票函数
def sell_tickets(window_name):
global ticket_num
while True:
lock.acquire() # 获取锁
if ticket_num > 0:
ticket_num -= 1
print(window_name + " - " + "售出1张票,剩余票数:" + str(ticket_num))
else:
print(window_name + " - " + "票已售完!")
break
lock.release() # 释放锁
# 创建三个线程,分别代表三个窗口
t1 = threading.Thread(target=sell_tickets, args=("窗口1",))
t2 = threading.Thread(target=sell_tickets, args=("窗口2",))
t3 = threading.Thread(target=sell_tickets, args=("窗口3",))
# 启动三个线程
t1.start()
t2.start()
t3.start()
# 等待三个线程结束
t1.join()
t2.join()
t3.join()
```
在上面的代码中,我们使用了一个 ticket_num 变量来表示总票数,使用了 threading.Lock() 方法创建了一个锁对象 lock,用于线程同步。在卖票函数 sell_tickets 中,我们使用了 while 循环,不断地判断票是否已经售完,如果还有票,则通过 lock.acquire() 获取锁,执行售票操作,然后通过 lock.release() 释放锁。在主线程中,我们创建了三个线程,分别代表三个窗口,然后启动这三个线程,并等待三个线程结束后再退出程序。这样,我们就可以实现三个窗口同时卖票的功能了。