当前位置: 首页 > 面试题库 >

关闭缓冲

郎魁
2023-03-14
问题内容

接下来的缓冲区在哪里…以及如何将其关闭?

我正在像这样的python程序中写出到stdout:

for line in sys.stdin:
    print line

这里有一些缓冲:

tail -f data.txt | grep -e APL | python -u Interpret.py

我尝试了以下方法来摆脱可能的缓冲…但是没有运气:

  • 如上使用-u标志和python调用
  • 在每次sys.stdout.write()调用之后调用sys.stdout.flush()…所有这些都创建了一个带有python的缓冲流,等待一分钟左右以打印出前几行。
  • 使用以下修改的命令:

stdbuf -o0 tail -f data.txt | stdbuf -o0 -i0 grep -e APL | stdbuf -i0 -o0
python -u Interpret.py

为了确定我的期望,我尝试:

tail -f data.txt | grep -e APL

这会产生稳定的线流……肯定不会像python命令那样缓冲。

那么,如何关闭缓冲?解答:事实证明,管道的两端都有缓冲。


问题答案:

我认为问题在于grep缓冲其输出。当您管道操作时,它就是这样做的tail -f | grep ... | some_other_prog。要grep每行刷新一次,请使用以下--line-buffered选项:

% tail -f data.txt | grep -e APL --line-buffered | test.py
APL

APL

APL

在哪里test.py

import sys
for line in sys.stdin:
    print(line)

(已在gnome-terminal的Linux上进行了测试。)



 类似资料:
  • 本文向大家介绍Thinkphp关闭缓存的方法,包括了Thinkphp关闭缓存的方法的使用技巧和注意事项,需要的朋友参考一下 因在开发中需要经常修改,从而要经常删除缓存,才能看到效果。 所以为了开发的方便,可以把缓存给去除。 1.找到\ThinkPHP\Common\convention.php和\ThinkPHP\Common\debug.php 2.打开这两个文件找到你想要的设置即可。 debu

  • 当我打开netrw并选择一个文件时,它会在一个新缓冲区中打开。这意味着如果我转到之前打开的缓冲区,我将返回netrw,而不是我之前编辑的文件。 我如何改变这种行为,这样我就可以在netrw的缓冲区中打开新文件,或者关闭我用来打开文件的缓冲区?

  • 是否有一个工具或库可以将PROBUFF对象映射到POJO。我想让pojo实现我无法使用PROBUFF对象实现的其他接口。或者我必须手动执行此转换?

  • 问题内容: 我正在使用Rails 4.1,并设置共享Redis ElasticCache节点进行缓存。我尝试了https://github.com/redis- store/redis-store 和https://github.com/sorentwo/readthis,它们看起来很棒。 但是,如果Redis崩溃了怎么办?readthis和redis-store都完全失败。我宁愿网站没有缓存也慢

  • 我们正在使用Apache Ignite作为一个缓存来加速我们的授权和权限调用。在客户端加载应用程序期间,应用程序使用get调用访问Ignite缓存大约18次,在此期间,我们从Ignite获得频繁的缓存关闭异常。我们一直试图在大量调用中复制相同的调用,但在本地运行时,每18个调用中有3/4的调用发生错误 日志:

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我想知道的优点和缺点 Google协议缓冲区 JSON格式 XML格式 我想为两个应用程序实现一个通用框架,一个在Perl中,第二个在Java中。因此,希望创