进程池

进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。

进程池中有两个方法:

  • apply  同步
  • apply_async  异步
from  multiprocessing import Process,Pool
import time,os

def Foo(i):
    time.sleep(1)
    print(i)
    return i+100   #这个返回值是给回调函数的参数

def Bar(arg):     #arg接收Foo函数的返回值

    print(os.getpid())
    print(os.getppid())
    print('logger:',arg)

pool = Pool(5)   #定义进程池 最大5个进程数

Bar(1)
print("----------------")

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)   #callback 回调函数,Foo执行一次,就执行一次回调函数
  
pool.close()   #这必须在join之前,不然报错
pool.join()
print('end')

相关文章

Python中的函数(二) 在上一篇文章中提到了Python中函数的定...
Python中的字符串 可能大多数人在学习C语言的时候,最先接触...
Python 面向对象编程(一) 虽然Python是解释性语言,但是它...
Python面向对象编程(二) 在前面一篇文章中谈到了类的基本定...
Python中的函数(一) 接触过C语言的朋友对函数这个词肯定非...
在windows下如何快速搭建web.py开发框架 用Python进行web开发...