自定义进程类
from multiprocessing import Process
import time
class CustomProcess(Process):#继承Process类
def run(self):# 重写Process类中run方法
num = 7
while num > 0 :
print(num)
time.sleep(2)
num -= 1
if __name__ == "__main__":#不加此条件就会执行下边代码,继续生成新的对象 造成递归
p = CustomProcess()#实例进程类对象 不传参数 默认调用run()方法
p.start()
p.join()
对进程池的初步理解
""" 进程池:用来创建多个进程 multiprocessing.Pool 可以指定最大进程数 multiprocessing.Pool常用函数解析 pool.apply_async(worker,(i,)) 这里是异步请求一下子出三个 如果是同步就会一步步执行 #(要调用的目标(传递给目标的参数元组))每次循环将会用空闲出来的子进程调用目标 apply_async(func(args,)) 非阻塞方式(并行执行)args为传递给func的参数列表 close() 关闭Pool join()主进程阻塞 等待子进程的退出 """ from multiprocessing import Pool import random,time def work(num): print(random.random()*num) time.sleep(3) if __name__ =="__main__": po = Pool(3)#定义一个进程池 最大进程数为3 默认为cpu的核数 for i in range(10): po.apply_async(work,(i,))#apply_async 选择要调用的目标,每次循环会调用空出来的子进程 po.close()#进程池关闭,不会再接受新的请求 po.join()#等待自进程结束,必须放在close后面 #在多进程中,主进程一般用来等待,真正的任务在子进程中执行