我一直在尝试学习在python中使用多处理模块。我似乎在此模块中发现了一个有趣的事实,如果使用pool()函数对某些子流程进行处理,则似乎每个流程都在完成任何流程,无论完成什么流程,都将至少花费成本。例如,如果我打印0.3秒钟,则打印16次,将花费很少的时间,但是如果我使用16个进程,并且每个进程打印一次,则将花费0.3 s,我不知道这是否是我的。代码有某种错误或其他错误,有人可以向我解释一下,我使用的代码如下:
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)
最佳答案
这300ms只是您的操作系统在系统上生成新进程所花费的时间。对于这种延迟,您几乎无能为力(除非获得更快的系统),并且每个系统的延迟都会有所不同。
关于python - python中的多进程是否至少花费0.3s?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57448256/