python中用multiprocessing模块来创建多进程

from multiprocessing import Pool
import time, os, random


#首先创建子进程函数
def run(name):
    print('子进程%s启动,进程号:%s' % (name, os.getpid()))

    #为了验证进程执行数量可以采取随机停止时间
    #记录开始时间
    start = time.time()
    time.sleep(random.choice(range(1,4)))      #随机停止1-3秒
    #结束时间
    end = time.time()
    #子进程结束标志
    print('子进程%s结束,子进程号:%s, 停留时间:%d' %(name, os.getpid(), end - start))

if __name__ == "__main__":
    #主进程开始
    print('主进程启动')

    #创建一个进程池,并设置最大同时执行数量
    p = Pool(3)

    #开始创建子进程并启动
    for i in range(10):
        p.apply_async(run, args=(i,))

    p.close()   #关闭进程池
    p.join()    #合并父子进程让父进程在子进程运行完后结束

    #主进程结束标志
    print('父进程结束')

 #多进程的创建可以采用multiprocessing模块中的Pool类来进行
    #创建方式:
    p = Pool(可选参数)   #该参数决定能够同时执行的子进程数,不填写则默认为电脑cpu的核心数量
    #这样只是创建了一个进程池对象,并没有创建真正的子进程,可以用用for循环来创建需要创建的进程
    for i in range(10):
        p.apply_async(run[子进程执行的函数名], args=(i,)[需要用到的参数])
        #这样就可以创建10个子进程,在子进程的执行过程中最多一次执行Pool(可选参数),可选参数个子进程。当某一个子进程执行完成之后,立刻剩下的子进程数,但是同时不超过可选参数个。
        
   #进程池和单个子进程创建的区别:
1.单个子进程的启动需要手动,进程池的不需要
2.进程池可以选择同时执行的最大数量
3.在p.join()前加p.close()关闭进程池。关闭之后不能再添加子进程。写在p.join()后无效

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值