Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing GNU并行:抑制有关增加块大小的警告_Parallel Processing_Gnu - Fatal编程技术网

Parallel processing GNU并行:抑制有关增加块大小的警告

Parallel processing GNU并行:抑制有关增加块大小的警告,parallel-processing,gnu,Parallel Processing,Gnu,我使用在文件的每一行上并发执行一个命令。虽然GNU parallel不会对结果造成任何问题,但它会发出大量以下类型的警告,扰乱输出: 并行:警告:块中未匹配完整记录。增加到--blocksize 1363150 我假设这只是意味着我选择使用的块大小在输入边界处不太匹配,因此并行正在增加块大小,所以它确实如此。正如我所说的,我不认为这会对输出结果造成任何问题,这只是一个警告,我需要反复看到,甚至一次。是否有任何方法可以特别抑制这些警告?我真的不想完全重定向stderr并错过任何重要消息。你的假

我使用在文件的每一行上并发执行一个命令。虽然GNU parallel不会对结果造成任何问题,但它会发出大量以下类型的警告,扰乱输出:


并行:警告:块中未匹配完整记录。增加到--blocksize 1363150


我假设这只是意味着我选择使用的块大小在输入边界处不太匹配,因此并行正在增加块大小,所以它确实如此。正如我所说的,我不认为这会对输出结果造成任何问题,这只是一个警告,我需要反复看到,甚至一次。是否有任何方法可以特别抑制这些警告?我真的不想完全重定向stderr并错过任何重要消息。

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

如果将“--blocksize”设置为至少是最大记录大小的2倍,则永远不会看到警告

从技术上讲,GNU并行读取一个完整的块(在本例中,我们假设为7字节),并将其附加到其缓冲区。它试图在其缓冲区中找到完整的记录(在本例中,让我们说一个完整的行)。如果不能,则会发出警告,以指数方式(缓慢)增加块大小,然后重试:

输入数据:

12345\n
123456\n
1234567\n
12345678\n
123456789\n
1234567890\n
GNU并行一次读取7个字节:

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

23456\n
1
234567
8\n
123456
789\n
1234
567890\n
缓冲区包含一整行,所以一切都很好

23456\n
1
234567
8\n
123456
789\n
1234
567890\n
缓冲区不包含完整的行,因此会出现警告,--blocksize增加到8:

\n
1234567
缓冲区现在包含一个完整的行,所以一切都很好

23456\n
1
234567
8\n
123456
789\n
1234
567890\n
缓冲区包含一整行,所以一切都很好

23456\n
1
234567
8\n
123456
789\n
1234
567890\n
缓冲区包含一整行,所以一切都很好

23456\n
1
234567
8\n
123456
789\n
1234
567890\n

缓冲区包含一整行,因此一切正常。

感谢您澄清消息的含义。不管怎样,有没有一种方法可以在不手动返回并调整块大小的情况下抑制消息?没有。但是您可以将--blocksize放在~/.parallel/config中,这样您就不必每次都键入它。
23456\n
1
234567
8\n
123456
789\n
1234
567890\n