作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个简短的 bash 脚本来逐行读取 csv 文件并将其传递给 python 脚本。它的运行似乎耗尽了我所有的处理能力,所以我只是想在开始检查 python 代码之前检查一下我的处理方式是否有效率低下的地方(这可能就是问题所在,但以防万一) )
#!/usr/bin/env bash
CSV_NAME='path/to/csv/to/read.csv'
mass_higgstools='path/to/python/script.py'
output_path='path/for/output.csv'
IFS='
'
header_line=($(cat $CSV_NAME))
count=0
{
read #Double read to skip the header line of data csv
while IFS=',' read -ra line
do
echo ${count}
count=$((count+1))
input=("${output_path}" "${header_line}" ${line[@]})
python ${mass_higgstools} ${input[@]} # Here we run, and pass variables to, a 2HDM higgstools script
done
} < $CSV_NAME
它已经在大约 16,000 行的 csv 上运行了大约 24 小时,而且才完成一半!在 1-2 行 csv 上运行只需不到一秒,并且运行 ps aux 告诉我它以某种方式使用了大约 100% 的 CPU。这是笔记本电脑,配备 Intel® Core™ i7-6820HQ CPU @ 2.70GHz × 8!
最佳答案
您没有使用全部 8 个内核,因此请考虑使用 GNU Parallel 一次运行 8 个 Python 作业。
尝试从 CSV 中剪切 16 行(不带标题)并将其保存在名为 params.txt
的文件中。 ,然后运行:
parallel --bar python NONVARYINGPARAMETERS :::: params.txt
它将同时运行 8 个 Python 作业,直到它们全部完成。 --bar
将显示一个进度条。每个作业都将收到不变的参数,后跟 params.txt
一行中的任何内容。
根据您的 CSV 的外观,您可能需要 parallel --colsep ','
表示输入文件中的列以逗号分隔。
如果由于某种原因 - 也许所需的内存太大 - 您想要并行运行更少的作业,请尝试 parallel -j 4 ...
一次运行 4 个。
关于bash - 使用了过多的处理能力,这部分效率低下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76441869/
我是一名优秀的程序员,十分优秀!