就我下面的代码而言,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
目前没有回答
相关问题 更多 >
编程相关推荐