python如何实现实现模拟3个窗口同时售100张票的需求,具体代码是什么
时间: 2024-02-13 22:04:56 浏览: 95
可以使用 Python 的多线程或多进程技术来实现模拟3个窗口同时售100张票的需求。以下是使用多线程技术的示例代码:
```python
import threading
tickets = 100
lock = threading.Lock()
def sell_tickets(window):
global tickets
while tickets > 0:
lock.acquire()
if tickets > 0:
tickets -= 1
print(f"窗口{window}售出1张票,剩余票数为{tickets}")
lock.release()
if __name__ == "__main__":
threads = []
for i in range(3):
t = threading.Thread(target=sell_tickets, args=(i+1,))
threads.append(t)
for t in threads:
t.start()
for t in threads:
t.join()
```
在这个示例代码中,我们使用了一个全局变量 `tickets` 来表示还剩下多少张票,使用 `threading.Lock()` 来保证多线程之间的互斥访问,避免出现多个线程同时操作 `tickets` 变量的情况。
我们定义了一个 `sell_tickets` 函数来模拟售票的过程,每个线程都会调用这个函数来售卖票。在 `sell_tickets` 函数中,使用 `lock.acquire()` 来获得锁,确保当前线程独占 `tickets` 变量,然后判断是否还有剩余票数,如果有就售卖一张票并打印相关信息,最后释放锁。
在主程序中,我们创建了3个线程来模拟3个售票窗口并启动这些线程,等待所有线程执行完毕后程序结束。
阅读全文