zoukankan      html  css  js  c++  java
  • python c++ 写文件 flush 缓冲区 即时显示

    当写入文件的规模很大,时间很长。

    普通的写入方法

    :filew.write("aa")

    会一直等到缓冲区满或者达到某一限定值时,才会从缓冲区写入到文件,这样就会不知道程序运行到哪一步了。(有一般的方法在某些循环的步骤输入一个标记变量,)

    我就想应该有边写入,边显示的功能。

    while 1:

      filew.write("aa");

      time.sleep(5);

      filew.flush(); #刷新输出缓存。

    http://m.oschina.net/blog/148227

    在c++中的写入情况:

    每个IO对象管理一个缓冲区,用于存储程序读写的数据:

    os<<"sssssssss:";

    系统将字符串字面值存储在与流os相关的缓冲区中。

    一下几种情况会刷新缓冲区,即写入到真是的输出设备或者文件。

    1.程序正常结束。作为main 返回工作的一部分,将清空所有输出缓冲区。

    2.在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区会在下一个值写入前刷新。

    3.用操纵符(manipulator)显示的刷新缓冲区,例如结束符endl;

      cout<<"ss"<<endl;// insert a newline ,flush

      cout<<"dd"<<ends;//inserts a null,flush

      cout<<"ee"<<flush;//flush  the buffer

    4.在每次输出操作执行完后,用unitbuf操纵符设置流的内部状态,从而清空缓冲区。

      cout<<unitbuf<<"sd"<<" ggg "<<nounitbuf;  //等价于下面的语句

      cout<<"sd"<<flush<<" ggg "<<flush;

    5.将输出流和输入流关联起来(tie)。在读输入流时将刷新器关联的输出缓冲去。

    如果程序崩溃了,缓冲区不会刷新,在缓冲区上的数据不会写入到文件中。

    这样会使之前的工作功亏一篑,而且不便于排错。要多用刷新。多用endl而不是“ ”.

  • 相关阅读:
    ES 2016+
    git-svn for mac
    Linux系统下安装rz/sz命令及使用说明
    Nginx location指令匹配顺序规则
    nginx修改配置后不生效的问题
    ssh and scp从远程服务器下载文件
    安装yii2 框架遇到的问题
    php添加openssl扩展
    GitHub Token for composer
    centos7+nginx+php+mysql环境搭建
  • 原文地址:https://www.cnblogs.com/xaf-dfg/p/3436305.html
Copyright © 2011-2022 走看看