python中进程池的用法

导入相关模块

import multiprocessing
import time
import randam
import os 

创建进程池中进程要执行的任务函数

def worker(msg):
    t_start = time.time()
    print("%s开始执行,进程号为%d" % (msg,os.getpid()))
    # random.random()随机生成0~1之间的浮点数
    time.sleep(random.random()*2)
    t_stop = time.time()
    pring(msg,"执行完毕,耗时%02.f" % (t_stop-t_start))

1. 创建进程池

if __name_ == '__main__':

    pool = multiprocessing.Poll(3)

2. 添加任务—>两种

    #   apply阻塞的任务添加方式 任务添加到进程池中的京城中执行 
    # 会阻塞等待任务执行完成 才会继续往下执行
    pool.apply(func=worker, args=('000,'))
    pool.apply(func=worker, args=('111,'))

    # 非阻塞的任务添加添加方式
    # 把任务添加到进程中执行 不阻塞等待任务执行完成
    pool.apply_async(func=worker, args=('222,'))
    pool.apply_async(func=worker, args=('333,'))
    # 主进程一旦退出 就会导致所有任务<子进程 不是通过继承的方式创建出来的>全部结束

3 关闭进程池–>不再允许添加任务

    # pool.close()
    # 3 直接终止所有正在运行的子进程
    pool.terminate()

4 等待所有任务执行完成

    #   一般使用非阻塞的任务添加方式需要配合.join()
    pool.join()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章