串行执行, 示例代码如下:

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()