首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GNU并行:--line-buffer选项不适用于--管道

GNU并行:--line-buffer选项不适用于--管道
EN

Stack Overflow用户
提问于 2019-06-05 23:59:13
回答 1查看 640关注 0票数 3

我正在尝试并行化一些需要实时处理的任务,所以我使用--line-buffer。我正在处理非常长的字符串,但是我注意到有时它会达到行的长度限制,从而产生command line too long错误,所以我决定通过管道传输它们

但是当我使用--管道选项时,--line-buffer就会停止工作

我使用更简单的命令进行了测试,但问题仍然存在

代码语言:javascript
运行
复制
# Returns instantly, but pass the data as args
(echo 1; echo 2; sleep 100) | parallel -j1 --lb cat
# Pass the data to STDIN, but only after 100 seconds
(echo 1; echo 2; sleep 100) | parallel -j1 --lb --pipe cat

我在Arch Linux上使用parallel 20190422

EN

回答 1

Stack Overflow用户

发布于 2019-06-06 07:51:25

代码语言:javascript
运行
复制
# Pass the data to STDIN, but only after 100 seconds
(echo 1; echo 2; sleep 100) | parallel -j1 --lb --pipe cat

这是由于GNU并行读取默认情况下为1MB。所以GNU并行等待更多的输入。只有在100秒后,STDIN才会关闭,GNU并行才会获得EOF。

您可能会这样做:

代码语言:javascript
运行
复制
(echo 1; echo 2; echo 3; sleep 100) | parallel -j1 --block 1 -N1 --lb --pipe 'date;cat'

但如果行更长,则增加--block

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56464124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档