プロセスプールのマルチの導入と使用

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)

おすすめ

転載: blog.csdn.net/weixin_34351321/article/details/91000559