我一直在尝试学习使用 python 中的多处理模块。我似乎在这个模块中发现了一个有趣的事实,如果使用 pool() 函数来处理一些子进程,似乎无论每个进程在做什么,完成所有进程都至少需要花费0.3s,比如我打印16次,耗时很少,但是如果我用16个进程,每个进程打印一次,就耗时0.3s,不知道是不是我的代码有某种错误或其他什么,有人可以向我解释一下吗,我使用的代码如下:
import time
from multiprocessing import Pool
import os
start = time.time()
def task():
print('something')
if __name__ == '__main__':
print('Parent process %s.' % os.getpid())
p = Pool(16)
for i in range(17):
p.apply_async(task)
print('Waiting for all subprocesses done...')
p.close()
p.join()
print('All subprocesses done.')
end = time.time()
print(end - start)
请您参考如下方法:
这 300 毫秒只是您的操作系统在您的系统上生成一个新进程所花费的时间。对于这种延迟,您几乎无能为力(除了获得更快的系统),而且它总是因系统而异。
