初学者多处理p.join节省CPU?

2024-06-16 13:53:15 发布

您现在位置:Python中文网/ 问答频道 /正文

就我下面的代码而言,process.join()是否从一开始就扼杀了进行多重处理的真正原因?因为我只对一个函数使用多处理,但我认为它比使用多线程(以毫秒为单位)要好

假设我的scanfunction基本上是I/O绑定的,但有时需要50毫秒才能解析,所以我认为多处理可能会进一步减少这种开销

如果我不使用process.join(),程序的循环速度会非常快,因此CPU的使用率会上升很多,因此我想知道process.join()是否会有什么好处(已经看了文件,但还不确定)

我为“多处理的持续时间”计时,但它更像是多处理部分之外的持续时间,因为它会测量启动新进程的开销(我想是加载我设置的所有其他模块)

我这样编码的原因是为了在主脚本的其他部分使用常规的“main”进程的同时,为scanfunction创建一个“子进程”?因此总共有2个CPU使用率

import multiprocesssing
initial_time = time.time()

#OTHER CODE HERE

if __name__ == "__main__":

    while True:
        print("Duration for multiprocessing: %s" %str(time.time()-initial_time))

        #START SCAN PROCESS IF IT DOESN'T EXIST
        for process in multiprocessing.active_children():
            if "SCAN" in str(process):
                break
        else:
            process = multiprocessing.Process(target=scanfunction, name="SCAN")
            process.start()
            process.join()
        initial_time = time.time()

        #OTHER CODE HERE

Tags: scantime进程maincode原因cpumultiprocessing