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

Is there any utils to control the amount of thread when executing binary?

make-j 标记,这使得 make 处理速度更快。
此标志告知 make 允许生成提供数量的 'threads' 的信息。

以同样的方式,是否有任何简单的方法可以在正常执行时应用 -j-like 选项?

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

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

linux 中是否有任何有用的实用程序来控制线程数量,如 -j 那样?

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

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

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

并行化有两种形式:processes and threads. Threads share their memory (except for the stack), and in Python are limited by the Global Interpreter Lock (GIL),因此在 Python 中通常不可能使用线程获得更多计算能力。 (情况在 C、C++ 和 Java 中有所不同,例如,线程 可以 使您加速。)进程(由 make 使用)在另一只手更难相互交谈(使用共享内存、信号量、套接字等),因为它们真正相互独立。

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

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