自定义进程和进程池

自定义进程类  

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后面
    #在多进程中,主进程一般用来等待,真正的任务在子进程中执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值