• Pool进程池


    进程池与Process区别, 主进程不会等着进程池结束才结束,但是process创建子进程,

    进程池避免了重复创建进程的过程

    但是 要注意当进程数很多的时候,一个进程执行一会,然后CPU在切换过来花费的时间更多

    所以pool里面的进程数不是越多越好,要根据CPU的核数和压力测试来确定,压力测试比如10000个用户访问一个服务器,看能不能承受

    from multiprocessing import Pool
    import time
    import os


    def work1():
    for i in range(4):
    print("-----work1=%d-----"%i)

    def work(num):
    for i in range(4):
    print("===pid=%d==num=%d"%(os.getpid(), num))


    if __name__ == "__main__":
    #表示进程池中对多有三个进程一起执行
    pool =Pool(3)

    for i in range(5):
    print("----%d----"%i)
    #向进程池添加任务
    #如果添加的任务数量超过了 进程池中的个数的话,那么不会导致添加不进入
    #添加到进程的任务 如果还没有被执行的话 那么此时 他们会等待进程池中的进程完成一个任务之后, 会自动的去用刚刚的那个进程 完成当前的新任务
    pool.apply_async(work,(i,))
    pool.apply_async(work1)
    print("----%d----" % i)

    pool.close()# 关闭进程池 相当于 不能够添加新任务了
    pool.join()#如果没有join(), 会导致进程池中的任务不会执行,这也就解决了主进程不会等着子进程结束的问题在pool中
  • 相关阅读:
    图灵测试
    百度面试题
    【javascript每日一练】- 插入排序
    各种排序讲解
    【javascript每日一练】- 多维数组
    不用JQuery,原生Javascript实现Ajax功能及相关知识点
    【javascript每日一练】- 无序数组排序
    前端面试题
    前端重构面试题
    面试题
  • 原文地址:https://www.cnblogs.com/shamoguzhou/p/14977794.html
Copyright © 2020-2023  润新知