Python使用多处理

and*_*ish 4 python multiprocessing

我试图在python 3.6中使用多处理.我有一个用不同的参数for loop运行method.目前,它一次运行一个,这需要花费相当多的时间,所以我尝试使用多处理.这是我有的:

def test(self):
    for key, value in dict.items():
        pool = Pool(processes=(cpu_count() - 1))
        pool.apply_async(self.thread_process, args=(key,value))
        pool.close()
        pool.join()


def thread_process(self, key, value):
    # self.__init__()
    print("For", key)
Run Code Online (Sandbox Code Playgroud)

我认为我的代码使用3个进程来运行一个method但我希望每个进程运行1个方法,但我不知道如何完成.我正在使用4核btw.

Ped*_*sta 5

你在for循环的每次迭代中都建立了一个池.事先创建一个池,应用您想要在多处理中运行的进程,然后加入它们:

from multiprocessing import Pool, cpu_count
import time

def t():
    # Make a dummy dictionary
    d = {k: k**2 for k in range(10)}

    pool = Pool(processes=(cpu_count() - 1))

    for key, value in d.items():
        pool.apply_async(thread_process, args=(key, value))

    pool.close()
    pool.join()


def thread_process(key, value):
    time.sleep(0.1)  # Simulate a process taking some time to complete
    print("For", key, value)

if __name__ == '__main__':
    t()
Run Code Online (Sandbox Code Playgroud)