import threading,time,random
ticket = 100#定義售票的總票數,一個進程內所有的線程可以共享此數據
def sale(lock):#售票處
global ticket #使用全局變量
while ticket:
lock.acquire()
ticket -=1
print("【%s】賣票,剩餘票數:%s"% (threading.current_thread().name, ticket))
lock.release()
time.sleep(random.randint(0,3))
def main():
lock = threading.Lock() #自動的全部解鎖操作
thread_list = [threading.Thread(target=sale, args=(lock,), name="售票員 - %s" % item) for item in range(5)]
for thread in thread_list:
thread.start()
for thread in thread_list:
thread.join()
print("車票售空")
if __name__ == '__main__':
main()
Python多線程模擬售票
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.