缘起:

今天在看arcface的训练代码,在shell脚本中运行python 命令时后面加了-u 参数(python -u xx.py),于是对这个参数进行了下小研究。

准备知识

用网上的一个程序示例来说明,python中标准错误(std.err)和标准输出(std.out)的输出规则(标准输出默认需要缓存后再输出到屏幕,而标准错误则直接打印到屏幕):

import sys

sys.stdout.write("stdout1")

sys.stderr.write("stderr1")

sys.stdout.write("stdout2")

sys.stderr.write("stderr2")

其中sys.stdout.write()和sys.stderr.write()均是向屏幕打印的语句。其实python中的print语句就是调用了sys.stdout.write(),例如在打印对象调用print obj 时,事实上是调用了 sys.stdout.write(obj+'\n')。

预想的结果是

stdout1stderr1stdout2stderr2

实际的结果为

stderr1stderr2stdout1stdout2

原因是python缓存机制,虽然stderr和stdout默认都是指向屏幕的,但是stderr是无缓存的,程序往stderr输出一个字符,就会在屏幕上显示一个;而stdout是有缓存的,只有遇到换行或者积累到一定的大小,才会显示出来。这就是为什么上面的会最先显示两个stderr的原因。

-u参数的使用

有了上面的铺垫,就可以引出python 的-u参数了。python命令加上-u(unbuffered)参数后会强制其标准输出也同标准错误一样不通过缓存直接打印到屏幕。

运行结果

stdout1stderr1stdout2stderr2

这样变成了预期的输出了。

注意:以上结果是在python2下执行实现的,本人也在python3下进行了测试,python3下即便加上-u或者加上环境变量UNBUFFERED=1 运行起来stdout依旧写缓存(执行结果stderr1stderr2stdout1stdout2),具体原因没搞清,后续搞清后再来更新。

通过以上分析,不难看出尤其是在将python执行脚本输出到屏幕结果直接重定向到日志文件的情况下,使用-u参数,这样将标准输出的结果不经缓存直接输出到日志文件。

以上这篇对python 命令的-u参数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python u_对python 命令的-u参数详解相关推荐

  1. ls命令及常用参数详解

    ls命令及常用参数详解 ls命令及常用参数详解 ls命令详解 Linux中执行ls -l后,显示的各列代表什么意思? ls命令及常用参数详解 ♢\color{red}{\diamondsuit}♢ l ...

  2. ping ip 端口_学生会私房菜【20200305期】——Ping命令及其常用参数详解

    一命令原理 Ping是ICMP的一个典型应用.Ping是检测网络连通的常用工具,同时也能收集其他相关信息.用户可以在Ping命令中指定不同参数,如ICMP报文长度.发送的ICMP报文个数.等待回复响应 ...

  3. g++编译命令使用以及参数详解

    gcc & g++现在是gnu中最主要和最流行的c & c++编译器 . g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c.这时候命令换做gcc即可.其实是无关紧要的. ...

  4. linux命令之ls命令及常用参数详解

    1.  ls命令解释 ls英文全称为list,列表列出的意思.作用是列出目录中的内容 2.  命令格式 Ls [参数] [目录] 3.  命令常用参数 不带参数:默认列出目录下的所有文件名 -l:   ...

  5. Python可视化——matplotlib.pyplot绘图的基本参数详解

    目录 1.matplotlib简介 2.图形组成元素的函数用法 2.1. figure():背景颜色 2.2 xlim()和 ylim():设置 x,y 轴的数值显示范围 2.3 xlabel()和 ...

  6. Python中制作词云的WordCloud参数详解

    场景 官方API: https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html 实现 font_path : st ...

  7. Python 散点图 回归拟合 带误差 各参数详解(2)

    1.数据下载地址 散点图样例数据:https://download.csdn.net/download/qq_35240689/87006447 import numpy as np import p ...

  8. Linux: Top命令查询结果参数详解

    1.top  -H -p 16482  (某个进程内部线程的运行情况) 整体统计信息 第一行:系统运行状态和平均负载 ​第一个参数:目前的时间 :10:14分 ​第二个参数:系统目前运行的时间:运行了 ...

  9. gcc命令常用选项参数详解

    gcc是GUN C和C++编译器,我们通常使用GCC时,编译器会依次做如下工作:preprocess(预处理),compilation(编译),assembly(汇编),link(链接).gcc提供了 ...

最新文章

  1. 【TensorFlow系列】【五】利用inception v3 pb模型文件做预测
  2. html-盒子模型及pading和margin相关
  3. VSTS For Testers读书笔记(5)
  4. mysql数据库被远程连接_如何让mysql数据库准许被远程连接访问
  5. 安装pyOpenGL/python-opengl
  6. postgres 坐标_用postgreSQL做基于地理位置的app(zz)
  7. C语言 --- sizeof() 7种使用详解
  8. k8s使用命令报错:error: You must be logged in to the server (Unauthorized)
  9. 使用极光推送发送短信验证码
  10. nginx配置地址端口
  11. SIM卡的操作系统cos
  12. 五、Netty核心技术之线程模型讲解
  13. 人工智能学习笔记 python实现梯度下降法对多元函数求解
  14. 神兵利器 nth_element
  15. javascript笔记知识(可能有错误、欢迎指正)
  16. java https x509trustmanager,java – 没有X509TrustManager实现可用
  17. 计算机组成原理数据线引脚,计算机组成原理复习题及问题详解.doc
  18. 各种加工方法下的粗糙度范围
  19. 什么是WebSocket?WebSocket在Vue中如何使用?
  20. PBOC 3.0非接触式学习笔记(一)

热门文章

  1. Asp.Net MVC4入门指南(5):从控制器访问数据模型
  2. 献给iphone开发的同仁们,同时也给自己做个笔记
  3. javax.script.ScriptException: ReferenceError: xxx is not defined in eval
  4. HttpsURLConnection 返回 400
  5. idea的plugins无法使用marketplace plugins are not loaded
  6. 微信网页开发配置步骤
  7. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)
  8. Android activity启动模式
  9. 接口测试到底是什么?如何制造接口数据
  10. 移动表到另一表空间命令