一:开启进程的两种方式(*****)
#开启进程的方式一: from multiprocessing import Process import time def task(name): print('%s is running' % name) time.sleep(3) print('%s is done' % name) # 在window系统上,开启子进程的操作必须放到if __name__ == '__main__'的子代码中 if __name__ == '__main__': p = Process(target=task, args=('nuanxin',)) # Process(target=task,kwargs={'name':'nuanxin'}) p.start() # 只是向操作系统发送了一个开启子进程的信号 print('混世魔王')
终端打印:
主
子进程 is running
子进程 is done
Process finished with exit code 0
# 开启进程的方式二: from multiprocessing import Process import time class Myprocess(Process): def __init__(self, name): super().__init__() self.name = name def run(self): print('%s is runing' % self.name) time.sleep(3) print('%s is done' % self.name) # windows系统上,开启子进程的操作系统必须放到if __name__ == '__main__'的子代码中 if __name__ == '__main__': p = Myprocess('nuanxin') p.start() # 只是向操作系统发送了一个开启进程的信号 print('混世魔王')
终端打印:
子进程 is running
子进程 is done
主
Process finished with exit code 0
二:进程对象的join方法(*****)
# join:让主进程在原地等待,等待进程运行完毕,不会影响进程的执行 from multiprocessing import Process import time def task(name, n): print('%s is running' % name) time.sleep(3) print('%s is done' % name) if __name__ == '__main__': p1 = Process(target=task, args=('子1', 1)) p2 = Process(target=task, args=('子2', 2)) p3 = Process(target=task, args=('子3', 3)) start = time.time() p1.start() p2.start() p3.start() time.sleep(5) p3.join() # 3 p1.join() p2.join() print('混世魔王', (time.time() - start)) # 5.027485609054565 5.029683589935303 5.025939464569092 start = time.time() p_l = [] for i in range(1, 4): p = Process(target=task, args=('子%s' % i, i)) p_l.append(p) p.start() for p in p_l: p.join() print('混世魔王', (time.time() - start))
终端打印:
子进程 is running
子进程 is running
子进程 is running
子进程 is done
子进程 is done
子进程 is done
Process finished with exit code 0
三:进程对象之间内存空间隔离(*****)
进程和进程之间的空间不会互相干扰,没办法直接获取另一个进程空间里的数据,要获取只有一种办法,就是写到文件里面再获取
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
from multiprocessing import Process n=100 def task(): global n n=0 if __name__ == '__main__': p=Process(target=task) p.start() p.join() print(n)