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.
你在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)