python pool.map 多线程 多参数

python pool.map 多线程 多参数

pool.map默认只能传入一个参数,包上一个lambda分发参数,即可解决多参数传入问题

from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool


def execThread(func, args, pool_size=12):
    pool = ThreadPool(pool_size)
    if len(args) == 1 or len(args[0]) == 1:
        res = pool.map(func, args)
    else:
        fun = lambda x: func(*x)
        res = pool.map(fun, args)
    pool.close()
    pool.join()
    return res


def __pool_test(a, b):
    import time
    time.sleep(a)
    print(a)
    return a + b


if __name__ == '__main__':
    data = [
        (1, 2),
        (2, 2),
        (3, 2),
        (4, 2),
    ]
    res = execThread(__pool_test, data)
    print(res)


猜你喜欢

转载自blog.csdn.net/weixin_43093163/article/details/123200434