我正在学习python的多处理模块。我想让我的代码使用我所有的CPU资源。这是我写的代码:
from multiprocessing import Process
import time
def work():
for i in range(1000):
x=5
y=10
z=x+y
if __name__ == '__main__':
start1 = time.time()
for i in range(100):
p=Process(target=work)
p.start()
p.join()
end1=time.time()
start = time.time()
for i in range(100):
work()
end=time.time()
print(f'With Parallel {end1-start1}')
print(f'Without Parallel {end-start}')
我得到的输出是:
^{pr2}$我尝试过在不同的并行范围内运行更快的语句,但我只在不同的并行范围内运行。我有什么遗漏吗?在
提前谢谢!在
您的基准测试方法存在问题:
我想您想并行运行100个进程,但是
Process.join()
blocks until process exit,实际上是串行运行的。此外,运行比CPU核心数更多的繁忙进程会导致高CPU争用,这是一个性能损失。正如一条评论指出的,与创建Process
的开销相比,work()
函数太简单了。在更好的版本:
^{pr2}$结果:
相关问题 更多 >
编程相关推荐