我想在笔记本电脑上同时运行两个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.
答案 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,您还可以注销,脚本将继续进行直到完成为止。