gpt4 book ai didi

linux - 执行二进制时是否有任何实用程序来控制线程数量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:41 25 4
gpt4 key购买 nike

make-j 标志,这使得 make 过程更快。
此标志告诉 make 允许生成提供的“线程”数量的信息。

同样,有没有简单的方法可以在正常执行时应用类似-j的选项?

例如,假设我想更快地执行我的 python 脚本。

$ python myprogram.py -j4 // <--?

在 linux 中有没有像 -j 这样有用的 utils 来控制线程的数量?

最佳答案

程序的并行化必须由程序员而不是用户来完成。

make 计算目标的依赖树。大多数目标将依赖于多个输入,例如由多个部分构建的可执行文件,例如编译为 .o 文件的 .c 文件。 make 的开发人员明白这一点,并使用依赖树,他们编写了 make,这样它就可以确定哪些部分可以相互独立地准备,并且 - j4 告诉它并行准备 4 个,例如并行启动 4 个编译器进程(不是线程!)。

要加速您的 Python 程序,您需要自己确定可以相互独立执行的部分,这完全取决于您的 Python 程序解决的问题的具体情况;没有通用的解决方案,许多问题很难并行化。

并行化有两种形式:processes and threads .线程共享它们的内存(堆栈除外),并且在 Python 中受限于 Global Interpreter Lock (GIL) ,因此在 Python 中通常不可能使用线程获得更多计算能力。 (例如,在 C、C++ 和 Java 中情况不同,线程可以让你加速。)另一方面,进程(由make使用)有一个彼此交谈(使用共享内存、信号量、套接字等)要困难得多,因为它们真正相互独立。

在 Python 中,模块 multiprocessingthreading 分别提供处理多个进程和线程的功能。

请注意,在 Unix/Linux/POSIX 下,从已创建线程 的程序创建新的进程 might easily give you deadlocks除非你非常小心。

关于linux - 执行二进制时是否有任何实用程序来控制线程数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53333944/

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