gpt4 book ai didi

parallel-processing - GNU 并行 : suppress warning about increasing blocksize

转载 作者:行者123 更新时间:2023-12-01 12:43:24 26 4
gpt4 key购买 nike

我正在使用 GNU Parallel在文件的每一行上同时执行一个命令。尽管它不会对结果造成任何问题,但 GNU parallel 会发出许多以下类型的警告,使输出变得困惑:

parallel: Warning: A full record was not matched in a block. Increasing to --blocksize 1363150

我认为这只是意味着我选择使用的块大小在输入边界上不太匹配,因此并行增加块大小也是如此。正如我所说,我不相信这会导致输出结果出现任何问题,这不是我需要一遍又一遍甚至一次重复看到的警告。有没有办法专门抑制这些警告?我真的不想完全重定向 stderr 并错过任何重要消息。

最佳答案

你的假设是错误的。 GNU Parallel 告诉您的是它已经读取了一个完整的块并且您的记录无法容纳该大小。所以加大尺寸。 GNU Parallel 告诉您“--blocksize 1363150”就足够了,但您可能希望进一步增加它,例如“--block 3M”。

如果您将 '--blocksize' 设置为最大记录大小的至少 2 倍,您将永远不会看到警告。

从技术上讲,它发生的事情是 GNU Parallel 读取一个完整的块(在这个例子中让我们说 7 个字节)并将它附加到它的缓冲区。它试图在它的缓冲区中找到一个完整的记录(在这个例子中让我们说一个完整的行)。如果不能,它会向您发出警告,以指数方式(缓慢地)增加块大小并再次尝试:

输入数据:

12345\n
123456\n
1234567\n
12345678\n
123456789\n
1234567890\n

GNU Parallel 一次读取 7 个字节:
12345\n
1

缓冲区包含一整行,所以一切都很好。
23456\n
1

缓冲区包含一整行,所以一切都很好。
234567

缓冲区不包含整行,因此您会收到警告并且 --blocksize 增加到 8:
\n
1234567

缓冲区现在包含一整行,所以一切都很好。
8\n
123456

缓冲区包含一整行,所以一切都很好。
789\n
1234

缓冲区包含一整行,所以一切都很好。
567890\n

缓冲区包含一整行,所以一切都很好。

关于parallel-processing - GNU 并行 : suppress warning about increasing blocksize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188993/

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