#创建一个子进程,并将参数传入 import os import time from multiprocessing import Process def func(args,args2): print(args,args2) time.sleep(3) print("子进程",os.getpid()) print("子进程的父进程", os.getppid()) print(123456) if __name__ == "__main_": p = Process(target=func,args=("参数","参数2"))#注册 #p是一个进程对象,还没有启动进程 p.start()#开启了一个子进程 print("*"*10) print("父进程",os.getpid()) print("父进程的父进程",os.getppid())
进程的生命周期 # 主进程 # 子进程 # 开启了子进程的主进程 : # 主进程自己的代码如果长,等待自己的代码执行结束, # 子进程的执行时间长,主进程会在主进程代码执行完毕之后等待子进程执行完毕之后 主进程才结束
#面向对象创 import os from multiprocessing import Process class MyProcess(Process): def __init__(self,arg1,arg2): super().__init__() self.arg1 = arg1 self.arg2 = arg2 def run(self): print(self.pid) print(self.name) print(self.arg1) print(self.arg2) if __name__ == "__main__": p1 = MyProcess(1,1) p1.start() p2 = MyProcess(1,2) p2.start()
import os import time from multiprocessing import Process def func(filename,content): with open(filename,"w")as f: f.write(content*10*"*") if __name__=="__main__": p_lst = [] for i in range(10): p = Process(target=func,args=("info%s"%i,0)) p_lst.append(p) p.start() for p in p_lst:p.join() print([i for i in os.walk(r'E:python10day37')])
进程与进程之间不经过操作的话,相互隔离数据
# 子进程 -- > 守护进程 import time from multiprocessing import Process def func(): while True: time.sleep(0.2) print('我还活着') def func2(): print('in func2 start') time.sleep(8) print('in func2 finished') if __name__ == '__main__': p = Process(target=func) p.daemon = True # 设置子进程为守护进程 p.start() p2 = Process(target=func2) p2.start() p2.terminate() # 结束一个子进程 time.sleep(1) print(p2.is_alive()) # 检验一个进程是否还活着 print(p2.name) # i = 0 # while i<5: # print('我是socket server') # time.sleep(1) # i+=1 # 守护进程 会 随着 主进程的代码执行完毕 而 结束 # 在主进程内结束一个子进程 p.terminate() # 结束一个进程不是在执行方法之后立即生效,需要一个操作系统响应的过程 # 检验一个进程是否活着的状态 p.is_alive() # p.name p.pid 这个进程的名字和进程号
import time from multiprocessing import Process from multiprocessing import Lock # def show(i): # with open('ticket') as f: # dic = json.load(f) # print('余票: %s'%dic['ticket']) def buy_ticket(i,lock): lock.acquire() #拿钥匙进门 with open('ticket') as f: dic = json.load(f) time.sleep(0.1) if dic['ticket'] > 0 : dic['ticket'] -= 1 print('