gpt4 book ai didi

bash - GNU 并行 : Argument list too long when calling function

转载 作者:行者123 更新时间:2023-12-01 10:29:16 25 4
gpt4 key购买 nike

我创建了一个脚本来验证(大量)项目,它以串行方式(一个接一个)进行验证,脚本的最终结果大约需要 9 个小时才能完成。环顾四周如何改进这一点,我发现了 GNU parallel 但我在让它工作时遇到了问题。

项目列表在一个文本文件中,所以我正在执行以下操作:

readarray items < ${ALL_ITEMS}
export -f process_item
parallel process_item ::: "${items[@]}"

问题是,我收到一个错误:

GNU parallel: Argument list too long

我通过查看类似的帖子了解1 , 2 , 3这比 GNU 并行 更像是 Linux 限制。从这些帖子的答案中,我还尝试通过将项目管道传输到 head 来推断解决方法,但结果是只有少数项目(传递给 head 的参数)是已处理。

我已经能够使用 xargs 使其工作:

cat "${ALL_ITEMS}" | xargs -n 1 -P ${THREADS} -I {} bash -c 'process_item "$@"' _ {}

但我看到 GNU parallel 有其他我想使用的不错的功能。

知道如何使用 GNU parallel 使其工作吗?顺便说一句,项目的数量大约是 250 万,并且每天都在增长(脚本作为 cron 作业运行)。

谢谢

最佳答案

来自 man parallel:

parallel [options] [command [arguments]] < list_of_arguments

所以:

export -f process_item
parallel process_item < ${ALL_ITEMS}

可能会做你想做的事。

关于bash - GNU 并行 : Argument list too long when calling function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44409873/

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