使用bash文件运行两个python脚本

时间:2019-02-28 11:29:17

标签: python windows bash

我想在笔记本电脑上同时运行两个python脚本,而不会降低它们的计算速度。

我已经搜索并看到this question说我们应该使用bash文件。 我进行了搜索,但不知道该怎么办以及如何使用称为bash的方式来运行这些票据。

python script1.py &
python script2.py &

我没有经验,需要您的专业建议。 我不知道该怎么做,在哪里以及如何做。 我正在使用Windows 64位。

最佳

PS: The answer I checked the mark is a way to run in parallel two tasks, but it does not decrease the calculation time for two parallel tasks at all.

3 个答案:

答案 0 :(得分:2)

我使用的批处理文件包含以下几行:

start python script1.py
start python script2.py

这将为每个start语句打开一个新窗口。

答案 1 :(得分:2)

如果可以在Windows上的Git Bash(GNU Parallel)上安装ref,则可以通过以下方式在单独的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约束的进程的处理时间。

这是一个演示,该示例基于在我的四核MacBook Pro上使用Spigot的算法(code)计算50,000位数的Pi:

单个任务(52秒):

▶ time python3 spigot.py
...
python3 spigot.py 52.73s user 0.32s system 98% cpu 53.857 total

在GNU并行环境(74s)中运行两次相同的计算:

▶ (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

当然,这是在忙于运行操作系统和我所有其他应用程序的系统上,因此它不会使处理时间减半,但仍然是一个很大的改进。

另请参阅this相关的堆栈溢出答案。

答案 2 :(得分:0)

运行各种并行作业的一种非常简单的方法是使用nohup。这会将输出重定向到文件调用nohup.out(默认情况下)。就您而言,您应该只写:

nohup python script1.py > output_script1 &
nohup python script2.py > output_script2 &

就是这样。使用nohup,您还可以注销,脚本将继续进行直到完成为止。