Python进程池简单示例

来源:互联网 发布:淘宝千色药妆是正品么 编辑:程序博客网 时间:2024/05/16 20:42

代码

from multiprocessing import Poolimport os,time,randomdef long_time_task(name):    print('run task %s(%s)'%(name,os.getpid()))    start = time.time()    time.sleep(random.random()*3 + 1)    end = time.time()    print("task %s runs %0.2f s"%(name,(end-start)))if __name__ == "__main__":    print("parent process %s" %os.getpid())    p = Pool(4)    for i in range(8):        p.apply_async(long_time_task,args=(i,))    print("wait for all subprocess done...")    p.close()    p.join()    print("all subprocesses done.")

输出如下:

parent process 8988wait for all subprocess done...run task 0(8348)run task 1(3124)run task 2(8940)run task 3(7088)task 1 runs 1.15 srun task 4(3124)task 0 runs 1.34 srun task 5(8348)task 2 runs 2.73 srun task 6(8940)task 3 runs 2.73 srun task 7(7088)task 5 runs 1.92 stask 6 runs 2.22 stask 4 runs 3.89 stask 7 runs 3.77 sall subprocesses done.

代码很简单,每个任务打印出自己的pid号,然后随机延时一段时间。

  • 创建进程后没有销毁,而是将任务函数队列依次分配到这些进程中,没有空闲的进程就等待(其实我很想知道如何把任务函数分配到进程中,是使用函数指针的原理?)

进程池、线程池技术很重要,立个flag在这里,等自己来填。