国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

實時獲取Python的print輸出流方法

2020-02-16 00:31:02
字體:
來源:轉載
供稿:網友

我的應用場景是:使用shell執行python文件,并且通過調用的返回值獲取python的標準輸出流。

shell程序如下:

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

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

# coding: utf-8import timeimport jsondef 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-8import timeimport jsonimport sysdef 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輸出流方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉隆县| 茂名市| 景谷| 庆元县| 镇安县| 达日县| 北宁市| 屏边| 隆回县| 博野县| 黄石市| 柳州市| 隆林| 金昌市| 华宁县| 聂拉木县| 抚顺市| 绥化市| 土默特右旗| 巨鹿县| 天祝| 于都县| 黎城县| 平安县| 观塘区| 京山县| 望都县| 金华市| 定边县| 清涧县| 鹿泉市| 浦东新区| 陕西省| 麟游县| 周口市| 五河县| 武山县| 江北区| 定南县| 武宁县| 呈贡县|