进程池

Posted jintian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程池相关的知识,希望对你有一定的参考价值。

from multiprocessing import Process,Pool

pool=Pool(5) 不写参数,默认cpu核数走

进程数一般不超过100,线程数不超过1000

pool.apply()  同步接口

pool.apply_asgnc()  异步接口

pool.close()在pool.join()之前  进程池格式

pool.apply_async(func=Foo,args=(i,))

回调函数:就是某个动作或者函数执行成功后再去执行的函数

主进程调用回调函数

pool.apply_async(func=Foo,args=(i,),callback=Bar)

def Bar(arg):要有参数是Foo函数的返回值

技术图片
from  multiprocessing import Process,Pool,Lock
import time,os

def Foo(i,t):

    time.sleep(3)
    print(i)
    print("son",os.getpid())
    # with lock:
    #     print("HELLO %s"%i)


    # return "HELLO %s"%i


def Bar(arg):
    pass
    # print(arg)
    # print("hello")
    # print("Bar:",os.getpid())

if __name__ == __main__:

    pool = Pool(5)
    lock=Lock()
    print("main pid",os.getpid())

    for i in range(100):
        #pool.apply(func=Foo, args=(i,))  #同步接口
        # pool.apply_async(func=Foo, args=(i,))

        #回调函数:  就是某个动作或者函数执行成功后再去执行的函数

        pool.apply_async(func=Foo, args=(i,),callback=Bar)

    pool.close()
    pool.join()         # join与close调用顺序是固定的

    print(end)
进程池

技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片

以上是关于进程池的主要内容,如果未能解决你的问题,请参考以下文章

多线程编程

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

python进程进程池代码部分

线程池

IIS6 程序池错误< 'DefaultAppPool' 提供服务的进程意外终止>

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程