我一直在尝试学习在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/

10-11 09:08