Python 多线程卖票问题
在学习多线程的时候,我们经常要学习到多窗口售票这一经典案例,今天我们将用Python语言写一个简单易懂的售票程序,帮助大家学习理解
有以下要求:
第一、不能出现打印出现混乱
第二、比单线程快
第三、票数不能为负数
先上网上百度到的代码
import threading
list_ticket = []
lock = threading.Lock() # 获取线程锁
num = 100
j = 0
for i in range(1, num + 1):
ticket_num = '0' * (3 - len(str(i))) + str(i)
list_ticket.append(ticket_num)
def seel_ticket(k):
global list_ticket
global j
while 1:
lock.acquire()
print(k, '号正在打印票')
if j != 100:
thre = list_ticket[j]
j += 1
print(k, "号出票成功,票号为:", thre