一、创建多进程
import multiprocessing
import os
import time
def work(num):
print("进程%s正在运行, pid=%s" %(multiprocessing.current_process().name,os.getpid()))
time.sleep(5)
def main():
jobs = []
for i in range(1,11):
p = multiprocessing.Process(name='进程%s'%(i),target=work,args=(i,))
jobs.append(p)
p.start()
for job in jobs:
job.join()
if __name__ == '__main__':
main()
我们使用运行该程序,在程序没有运行结束之前,在shell中运行ps -aux | grep .py 命令,我们会看到十一个相同的进程产生于该脚本文件。
我们前面使用过继承threading.Thread类来实现自己的多线程类,同样,在多进程里面,我们也可以通过继承multiprocessing.Process类实现多进程。
class SubProcess(multiprocessing.Process):
def __init__(self, name, num):
super(SubProcess, self).__init__()
self.num = num
def run(self):
print('work-%s' %(self.num))
# 获取当前进程的名称
print("进程%s正在运行, pid=%s" %(multiprocessing.current_process().name,
os.getpid()))
我们通过自己的类的实例化对象就可以创建多进程了。
二 、进程间的通信
我们通过队列区实现进程间的通信
import multiprocessing
import os
import random
import time
class SubProcess1(multiprocessing.Process):
def __init__(self,que):
super(SubProcess1,self).__in