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)