实时获取Python的print输出流方法


Posted in Python onJanuary 07, 2019

我的应用场景是:使用shell执行python文件,并且通过调用的返回值获取python的标准输出流。

shell程序如下:

cmd='python '$1' '$2' '$3' '$5' '$4
RESULT=eval $cmd
echo $RESULT

之前我的写的python程序如下:

# coding: utf-8
import time
import json

def execute(_database, _parameter):
  print 'sleep start'
  sleepTime = 30
  print 'sleep ' , sleepTime , 'second.'
  time.sleep(sleepTime)
  print 'sleep done'
  testDic={'doneCode':0,'doneMsg':'Done','logList':'success'}
  return json.dumps(testDic, ensure_ascii=False)

if __name__ == "__main__":
  p = 'param'
  db = 'databsae'
  result = execute(db, p)
  print result

之后遇到的问题是shell不能实时的获取python的print流,也就是说不是获取第一条print语句之后,休眠了30秒之后才获取最后一条print语句。

所有的print流在shell中都是一次性获取的,这种情况对于执行时间比较短的程序脚本没什么影响,但是当python程序需要执行很长时间,而需要通过print流追踪程序,就影响比较大。

通过查阅资料,可知:

当我们在 Python 中打印对象调用 print obj 时候,事实上是调用了 sys.stdout.write(obj+'\n')

print 将你需要的内容打印到了控制台,然后追加了一个换行符

print 会调用 sys.stdout 的 write 方法

以下两行在事实上等价:

sys.stdout.write('hello'+'\n')
print 'hello'

调用sys.stdout.flush()强制其“缓冲,这意味着它会写的一切在缓冲区到终端,即使通常会在这样做之前等待。

改动后程序如下:

# coding: utf-8
import time
import json
import sys
def execute(_database, _parameter):
  print 'time 1:',time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
  print 'sleep start.'
  for i in range(1,10):
    print 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:',i
    print 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb:',i*i
    print 'ccccccccccccccccccccccccccccccccccccccccccccccccccccccc:',i+i
    sys.stdout.flush()
    time.sleep(10)
  print 'sleep end '
  print 'time 2:',time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
  testDic={'doneCode':0,'doneMsg':'Done','logList':'success'}
  return json.dumps(testDic, ensure_ascii=False)

if __name__ == "__main__":
  p = 'param'
  db = 'database'
  result = execute(db, p)
  print result

以上这篇实时获取Python的print输出流方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中用format函数格式化字符串的用法
Apr 08 Python
python获取从命令行输入数字的方法
Apr 29 Python
python黑魔法之参数传递
Feb 12 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
Flask框架WTForm表单用法示例
Jul 20 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
python实现简单银行管理系统
Oct 25 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
Python 运行 shell 获取输出结果的实例
Jan 07 #Python
在python 中实现运行多条shell命令
Jan 07 #Python
Python之使用adb shell命令启动应用的方法详解
Jan 07 #Python
python 对多个csv文件分别进行处理的方法
Jan 07 #Python
python 同时运行多个程序的实例
Jan 07 #Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 #Python
在python中使用with打开多个文件的方法
Jan 07 #Python
You might like
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
PHP图片加水印实现方法
2016/05/06 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
PHP实现递归的三种方法
2020/07/04 PHP
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
python使用Berkeley DB数据库实例
2014/09/26 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python 类的继承实例详解
2017/03/25 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
Python中使用Counter进行字典创建以及key数量统计的方法
2018/07/06 Python
Python实战之制作天气查询软件
2019/05/14 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
python计算二维矩形IOU实例
2020/01/18 Python
python实现简单的购物程序代码实例
2020/03/03 Python
django rest framework serializers序列化实例
2020/05/13 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
创业计划实施的7大步骤
2014/02/05 职场文书
乡村文明行动实施方案
2014/03/29 职场文书
工作总结与自我评价
2014/09/18 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
后天观后感
2015/06/08 职场文书
大学生受助感言
2015/08/01 职场文书