zoukankan      html  css  js  c++  java
  • python multiprocessing.Pool 中map、map_async、apply、apply_async的区别

      multiprocessing是python的多进程库,multiprocessing.dummy则是多线程的版本,使用都一样。

      其中都有pool池的概念,进程池/线程池有共同的方法,其中方法对比如下 :

    There are four choices to mapping jobs to process. Here are the differences:

                 Multi-args   Concurrence    Blocking     Ordered-results
    map          no           yes            yes          yes
    apply        yes          no             yes          no
    map_async    no           yes            no           yes
    apply_async  yes          yes            no           no

    In Python 3, a new function starmap can accept multiple arguments.

    Note that map and map_async are called for a list of jobs in one time, but apply and apply_async  can only called for one job. However, apply_async execute a job in background therefore in parallel. See examples:

    # map
    results = pool.map(worker, [1, 2, 3])
    
    # apply
    for x, y in [[1, 1], [2, 2]]:
        results.append(pool.apply(worker, (x, y)))
    
    def collect_result(result):
        results.append(result)
    
    # map_async
    pool.map_async(worker, jobs, callback=collect_result)
    
    # apply_async
    for x, y in [[1, 1], [2, 2]]:
        pool.apply_async(worker, (x, y), callback=collect_result)
    原文地址: http://blog.shenwei.me/python-multiprocessing-pool-difference-between-map-apply-map_async-apply_async/
  • 相关阅读:
    [CF1299B] Aerodynamic
    [CF1338B] Edge Weight Assignment
    [CF689C] Mike and Chocolate Thieves
    [CF729C] Road to Cinema
    [CF735C] Tennis Championship
    [CF766C] Mahmoud and a Message
    [CF797C] Minimal string
    [CF798C] Mike and gcd problem
    [CF818D] Multicolored Cars
    《剑指Offer》面试题55:字符流中第一个不重复的字符
  • 原文地址:https://www.cnblogs.com/peter1994/p/7645338.html
Copyright © 2011-2022 走看看