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()
浙公网安备 33010602011771号