美文网首页
进程池multiprocess 介绍及用法

进程池multiprocess 介绍及用法

作者: ___大鱼___ | 来源:发表于2019-05-31 10:42 被阅读0次
    import multiprocessing
    import time
    
    
    def get_html(n):
        time.sleep(n)
        print('process is complete')
        return n
    
    
    if __name__ == '__main__':
        process1 = multiprocessing.Process(target=get_html, args=(2, ))
    
        process1.start()
        print(process1.pid)  # 获取多进程的pid   在start之后才会有进程pid
        process1.join()
        print('')
    
        # 使用进程池
        pool = multiprocessing.Pool(multiprocessing.cpu_count())   # multiprocessing.cpu_count获取cpu数量
        result = pool.apply_async(get_html, args=(3, ))  # 异步执行一个任务
    
        # 等待所有任务完成
        pool.close()  # join之前必须先close  否则会报错的
        pool.join()
        print(result.get())  # 获取执行函数返回的结果
    
        pool = multiprocessing.Pool(multiprocessing.cpu_count())  # multiprocessing.cpu_count获取cpu数量
    
        # imap方法
        for result in pool.imap(get_html, [3, 43, 45]):   # 会根据可迭代对象的参数 打印执行结果
            print(result)
    
        for result in pool.imap_unordered(get_html, [3, 5, 6]):  # 会根据谁先执行完成 打印执行结果
            print(result)
    

    相关文章

      网友评论

          本文标题:进程池multiprocess 介绍及用法

          本文链接:https://www.haomeiwen.com/subject/entwtctx.html