gpt4 book ai didi

python - 如果最耗时的部分是posix.waitpid,如何提高代码性能?

转载 作者:行者123 更新时间:2023-11-28 21:48:53 24 4
gpt4 key购买 nike

我使用 cprofile 来分析 python 程序。最耗时的部分原来是posix.waitpid。我可以做些什么来提高代码性能?请参阅下面的屏幕截图,了解我的 cprofile 结果的一行

enter image description here

最佳答案

subprocess.call 花费时间在posix.waitpid

当您使用 subprocess.call(other_process) 时,会启动另一个进程并等待它完成。如果另一个进程做了很多工作,那会花费很多时间。

这就是您的探查器所显示的内容:大多数时候,您正在等待其他进程完成。

很可能,其他进程实际上有充分的理由花费那么多时间,但分析器无法告诉您任何相关信息,因为它分析的是此进程,而不是其他过程

import 而不是 call?

您在评论中写道,您可以导入其他脚本并运行它的主要功能。这肯定会消除创建新进程的开销,但实际上大部分时间可能都花在了另一个进程的主要功能上。

好吧,至少有了 import,一切都将在同一个进程中运行,分析器将能够提供更多有用的信息。

另一方面,您想要一个子流程?

不清楚您首先创建子流程的原因,所以我猜您希望并行执行其代码。

好吧,你可以启动一个子进程,而不是等待它完成:

代替:

subprocess.call(other_process)

这样做:

process = subprocess.Popen(other_process)

# the code which follows is executed in parallel with the other process

现在子进程已启动,您可以使用 process 变量查看它何时完成。

其他选项:threadingmultiprocessing

如果你想并行运行一些你可以导入的代码,那么很可能threadingmultiprocessing模块是比 subprocess 更好的选择。

关于python - 如果最耗时的部分是posix.waitpid,如何提高代码性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34500943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com