串行执行, 示例代码如下:
import time
import json
def bucy_ticket():
# 1.获取余票
time.sleep(1)
data = json.load(open('ticket.json'))
left_count = data['count']
# 2.有余票, 购买
if left_count > 0:
time.sleep(1)
print('剩余余票%s,正在购买...' % left_count)
data["count"] = left_count - 1
json.dump(data, open('ticket.json', 'w'))
# 3.没有余票, 提示余票不足
else:
print('余票不足, 购买失败')
def main():
for i in range(10):
bucy_ticket()
if __name__ == '__main__':
main()
并发买票, 上锁
import multiprocessing
import time
import json
def bucy_ticket(lock):
# 1.获取余票
time.sleep(1)
lock.acquire()
data = json.load(open('ticket.json'))
left_count = data['count']
# 2.有余票, 购买
if left_count > 0:
time.sleep(1)
print('剩余余票%s,正在购买...' % left_count)
data["count"] = left_count - 1
json.dump(data, open('ticket.json', 'w'))
# 3.没有余票, 提示余票不足
else:
print('余票不足, 购买失败')
lock.release()
def main():
lock = multiprocessing.Lock()
for i in range(10):
p = multiprocessing.Process(target=bucy_ticket, args=(lock, ))
p.start()
if __name__ == '__main__':
main()