gpt4 book ai didi

bash - 使用了过多的处理能力,这部分效率低下吗?

转载 作者:行者123 更新时间:2023-12-03 07:54:19 24 4
gpt4 key购买 nike

我编写了一个简短的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com