并发编程-多进程
发布时间:2021-01-08 07:23:29 所属栏目:系统 来源:网络整理
导读:副标题#e# 一.进程 新进程的创建都是由一个已经存在的进程执行了一个用于创建进程的系统调用而创建的。 1.在UNIX中:fork会创建一个与父进程一摸一样的副本 2.在Windows:系统调用CreateProcess创建进程 进程的状态 程序遇到IO操作(Input、output),会阻塞
|
2.需要自己加锁处理。 from multiprocessing import Process
from multiprocessing import Lock
import json
import time
import os
import random
def search():
time.sleep(random.randint(1,3)) # 模拟网络延迟(查询环节)
with open(‘ticket.json‘,encoding=‘utf-8‘) as f1:
dic = json.load(f1)
print(f‘{os.getpid()} 查看了票数,剩余{dic["count"]}‘)
def paid():
with open(‘ticket.json‘,encoding=‘utf-8‘) as f1:
dic = json.load(f1)
if dic[‘count‘] > 0:
dic[‘count‘] -= 1
time.sleep(random.randint(1,3)) # 模拟网络延迟(购买环节)
with open(‘ticket.json‘,encoding=‘utf-8‘,mode=‘w‘) as f1:
json.dump(dic,f1)
print(f‘{os.getpid()} 购买成功‘)
def task(lock):
search()
lock.acquire()
paid()
lock.release()
if __name__ == ‘__main__‘:
mutex = Lock()
for i in range(6):
p = Process(target=task,args=(mutex,))
p.start()
示例
2.基于队列通信进程之间互相隔离,要实现进程间通信(IPC,此机制帮我们自动处理锁的问题),multiprocessing支持两种形式:队列和管道,这两种消息都是使用消息传递。 #1:起到缓冲的作用 队列(管道+锁实现):先进先出 (编辑:开发网_商丘站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


