python3 用multiprocessing模块传递多个参数

from datetime import datetime
from time import sleep
import numpy as np
import multiprocessing
# from multiprocessing.dummy import Pool as ThreadPool


def func(x, y, z):
    sleep(3)
    return x+y, z


if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=6)
    x = np.zeros((6, 1), dtype=int)
    y = np.zeros((6, 1), dtype=int)
    z = np.zeros((6, 1), dtype=int)
    result = []

    for i in range(6):
        x[i,0] = i
        y[i,0] = i
        z[i,0] = i

    xx = np.squeeze(x)
    yy = np.squeeze(y)
    zz = np.squeeze(z)
    c = list(zip(xx, yy, zz))
    print(c)
    cc = np.array(c)
    # print(cc)
    # d = [(0, 0, 0), (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5)]
    print(datetime.now())
    result = pool.starmap(func, c)
    print(result)
    print(datetime.now())

# from functools import partial
#
# def sum(a, b, c):
# return a + b + c
#
# a = 'abc'
# b = "ABC"
# c = "123"
# pa = partial(sum, a)
# re = pa(b, c)
#
# print(re)

 

posted on 2021-07-22 15:45  Karlkiller  阅读(745)  评论(0编辑  收藏  举报

导航