【发布时间】:2021-11-03 03:35:24
【问题描述】:
import time
import multiprocessing
def do_something():
print("sleep 1 second")
time.sleep(1)
print("Done sleeping...")
if __name__ =='__main__':
start = time.perf_counter()
processes = []
for _ in range(10):
p = multiprocessing.Process(target=do_something)
p.start()
processes.append(p)
for process in processes:
process.join()
finish = time.perf_counter()
print(f'Finished in {round(finish-start, 2)} second(s)')
上面是我的代码,我想做的是进行多处理,问题是我的代码最终运行了 1.22 秒,而 youtube 上的人只需要 1.02 秒!我正在使用 pycharm (python 3.9) 并检查我的任务管理器,当我运行此代码时,我的 cpu 利用率没有达到最大值,我的内存也是如此。是不是因为我用的是笔记本电脑而不是台式机?我的电脑硬件会影响速度吗? 0.2 秒对我来说意义重大,因为我正在做一个项目,而一秒钟的时间很重要。
或者是因为我使用了if __name__ =='__main__':,但问题是如果我不使用这一行,我的代码将根本无法运行,但视频中的那个人能够在没有这一行的情况下运行他的代码(我检查了,我没有打开任何其他文件,我只有一个是main.py,如上所示。我个人认为这不会影响速度,但如果确实如此,请告诉我。
我正在谈论的 youtube 视频是 Corey Schafer 的“Python 多处理教程:使用多处理模块并行运行代码”
视频:Python Multiprocessing Tutorial: Run Code in Parallel Using the Multiprocessing Module
14:09可以看到他运行代码只需要1.02秒
【问题讨论】:
标签: python performance debugging multiprocessing multiprocess