如果您可以在 Git Bash(
ref)下安装
GNU Parallel,则可以以以下方式在不同的 CPU 上运行两个脚本:
▶ (cat <<EOF) | parallel --jobs 2
python script1.py
python script2.py
EOF
来自并行人手册的注释:
--jobs N
Number of jobslots on each machine. Run up to N jobs in parallel.
0 means as many as possible. Default is 100% which will run one job per
CPU on each machine.
请注意,问题已更新以说明并行化不会改善计算时间,这通常是不正确的说法。
虽然并行化的好处高度依赖于机器和工作量,但在多核计算机上,它显着提高了 CPU 密集型进程的处理时间。
以下是一个基于 Spigot 算法(
code)计算 50,000 位 Pi 的演示,使用我的四核 MacBook Pro 进行单任务(52秒):
▶ time python3 spigot.py
...
python3 spigot.py 52.73s user 0.32s system 98% cpu 53.857 total
在 GNU 并行计算中运行相同的计算两次(74秒):
▶ (cat <<EOF) | time parallel --jobs 2
python3 spigot.py
python3 spigot.py
EOF
...
parallel --jobs 2 74.19s user 0.48s system 196% cpu 37.923 total
当然,这是在一个繁忙运行操作系统和所有其他应用程序的系统上,所以它并不能将处理时间减半,但仍然是一个很大的改进。
另请参见相关的Stack Overflow答案
this。
python script1.py&python script2.py&
,一切都会正确吗? - Ma Ypython script1.py &
并点击回车键,然后再运行python script2.py &
。 - sahasrara62