python---打印函数print延时且不按顺序输出
在分析zephyr系统时,看编译过程遇到了python语言的程序,在里面加入了一些打印,结果输出的结果不是按顺序输出的,使用不同的命令窗口,如windows的DOS,MINGW64发现输出的结果不一致。原来是带的输出缓冲引起的
在逻辑上应该是
print(“------------------------------”)
这一句代码执行的,可是从结果来看却是先打印了-- west 这个信息。要解决这个问题就是要关闭缓冲,或者立即输出
但是我们知道print函数默认是有刷新换行的,可知跟不同的编译环境有关
1.python -u
不走缓冲区
可以看到是按逻辑输出的
2. flush buffer
强刷 sys.write 的缓冲区, print 的标准输出实际上是到了 sys.write的缓冲区,
当遇到回车
程序执行结束
flush
缓冲区满
则会输出到控制台
3 概念:什么是全缓冲、行缓冲和无缓冲?
这里的缓冲是指用户层的I/O缓冲区,不是内核缓冲。
1.全缓冲:填满标准I/O缓存区才进行实际的I/O操作。磁盘上的文件用标准I/O打开,默认都是全缓存的。当缓存区填满或者进行flush操作时候才会进行磁盘操作。
2.行缓冲:当输入输出遇到换行符时候就是行缓存了。标准输入和标准输出都是行缓存。
3.无缓冲:用户层不提供缓冲,对流的读写可以立即操作实际文件。典型例子就是标准错误输出,因为它必须尽快输出,且是输出到具有交互式的设备商,如屏幕,不是磁盘。
上述都是I/O缓冲区,其作用是减少read和write的次数,即减少了系统调用,从而减少了系统开销,提高了I/O速度。
内核缓冲区:从理论上讲,内核可以在任何时候写磁盘,但并不是所有的write操作都会导致内核的写动作。内核会把要写的数据暂时存在缓冲区中,积累到一定数量后再一次写入。有时会导致意外情况,比如断电,内核还来不及把内核缓冲区中的数据写到磁盘上,这些更新的数据就会丢失。
4.print函数
print(help(print)) 使用此语句打印 print(…)
print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.
python---打印函数print延时且不按顺序输出相关推荐
- ZYNQ开发中SDK输出串口选择以及打印函数print、printf、xil_printf的差别
ZYNQ开发系列--SDK输出串口选择以及打印函数print.printf.xil_printf的差别 前言 两个串口到底是谁在打印? print 和 printf 和 xil_printf 前言 在 ...
- ZYNQ开发系列——SDK输出串口选择以及打印函数print、printf、xil_printf的差别
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--SDK输出串口选择以及打印函数print.printf.xil_printf的差别 前言 两个串口到底是谁在打印? ...
- DIY单片机串口打印函数print
原始的单片机串口只能发送单字节数据,再加个封装也就能发送个字符串,但是无法发送数字变量,要发送数字变量那基本要引入C语言的库函数printf,但是这个pintf函数 好用确实是好用但是有个很大的缺点相 ...
- Python的打印函数print()中占位符%和format()使用以及f格式化字符串
目录 一.print中占位符分为3种: 1.% 2.format() 3.f格式化字符串 二.举例说明: 1.%占位符: 2.format()函数: 3.f-字符串格式化: 一.print中占位符分为 ...
- Python常用函数总结(按照字母顺序)
一.O 1.os.path.splitext 和os.path.split os.path.splitext()是将文件名和扩展名分开 os.path.split()是将路径和文件全名分开 二.W 1 ...
- 转义字符'\r'在Python内置函数print()中的妙用
在Python 3.x中,内置函数print()用来实现格式化输出,各参数含义请参考本文末尾的相关阅读.本文重点介绍print()函数的end参数以及转义字符'\r'的妙用. 本文末尾的相关阅读中已经 ...
- python打印日历小项目
公众号后台回复"图书",了解更多号主新书内容 作者:Riggle 来源:文科数据员 各位小伙伴,好久不见!数据猿最近在全面复习python知识,继续更新啦!今天带来函数学习的相关知 ...
- Python| 阿尔法函数和代码复用
目录 打招呼函数 能否组成三角形函数 计算n个自然数的立方和 简单计算器实现 转换秒为时间 最大公约数 杨辉三角 线性查找 七段数码管绘制 斐波那契数列计算 汉诺塔实践 合法的用户名 科赫雪花小包裹 ...
- python利用列表计算斐波那契数列前30项并输出_python 题目:斐波那契数列计算;题目:站队顺序输出;题目:合法括号组合的生成;题目:用户登录(三次机会)...
斐波那契数列计算 B 描述 斐波那契数列如下: F(0) = 0, F(1) = 1 F(n) = F(n-1) + F(n-2) 编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波 ...
最新文章
- UVA 10479 The Hendrie Sequence
- 用python画雪花-python使用turtle库与random库绘制雪花
- 你要知道动机何在吗?
- C# HSSFWorkbook与XSSFWorkbook的区别和.xls和.xlsx的区别
- c mysql 取错误信息_初始化 MYSQL 后为何得到一会错误信息?
- 使用javamail 发送邮件
- 眼控科技 实习算法工程师面试
- 08方法重载,覆写,多态
- Python运算符+与+=的那些事
- jetbrains全家桶中好用的快捷键插件:Key Promoter X
- 秒懂 this(带你撸平this)
- android小小的开发细节
- Unity读取CSV表格时出现中文乱码处理方式
- 带宽总结:3dB带宽、零点到零点带宽、均方根带宽等
- ​​​​​​​​​​​勾股数的规律
- 狂野飙车8:极速凌云 for Mac v1.0.2 Asphalt 8 好玩的赛车游戏
- 适用于顺序磁盘访问的1分钟法则
- Python之面相对象-封装 多态 约束 super()
- 前端学习笔记02--CSS快速了解
- 《当程序员的那些狗日日子》(五十六)步入正轨