python-多任务编程-进程池应用

示例代码如下:

import multiprocessing

import time
import json


def buy_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():

	# 设置进程池数量为6
	pool = multiprocessing.Pool(6)

	# 进程池锁
	manager = multiprocessing.Manager()
	lock = manager.Lock()

	for i in range(10):
		# 串行执行, 前一个执行完毕后, 才会往下执行
		# pool.apply(func=buy_ticket)
		# 异步执行, 主进程不会等待进程池内部任务执行结束
		pool.apply_async(func=buy_ticket, args=(lock, ))

	# 关闭进程池, 不再接受新任务
	pool.close()
	# 等待进程池任务执行完成
	pool.join()

	print('程序执行结束...')


if __name__ == '__main__':
	main()
posted @ 2021-03-26 13:49  程序员陈师兄cxycsx  阅读(51)  评论(0)    收藏  举报