# encoding=utf-8
import time
from multiprocessing import Pool
class testClass():
def upMethod(self,type=3):
print ('1: type : %d'%type)
time.sleep(1)
def downMethod(self,type=4):
print ('2: type : %d'%type)
time.sleep(1)
def multiProcess(self):
p = Pool() #默认进程数量为cpu核的数目
res1 = p.apply_async(self, args=(1,2))#apply_async并发执行
res2 = p.apply_async(self, args=(2,))#第一个也可以是函数
p.close()
p.join()#一定要join,不然主进程会在进程池退出之前退出退出
def multiProcess_order(self):
p = Pool()
res1 = p.apply(self, args=(1,6))#apply顺序执行
res2 = p.apply(self, args=(2,))
p.close()
print("close")
def __call__(self,sign,type=5):#这里标明调用这个类的时候走哪个函数
if sign == 1 :
return self.upMethod(type)
elif sign == 2:
return self.downMethod(type)
else:
print("qwe")
testObj=testClass()
testObj.multiProcess()
testObj.multiProcess_order()
输出
1: type : 2
2: type : 5
1: type : 6
2: type : 5
close
若进程之间通信,则可通过如下que进行
manager = multiprocessing.Manager()
que = manager.Queue()
que.put(info)#消息放入
que.get(True)#取消息 True会阻塞