国产探花免费观看_亚洲丰满少妇自慰呻吟_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輸出流方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松溪县| 图片| 东平县| 石泉县| 东宁县| 连南| 莱芜市| 泽州县| 大连市| 温泉县| 昌吉市| 朔州市| 新蔡县| 大名县| 鄂伦春自治旗| 盘锦市| 麻江县| 弥渡县| 浠水县| 瑞昌市| 桃园市| 康马县| 肥乡县| 鄱阳县| 运城市| 中方县| 太原市| 红安县| 石家庄市| 金山区| 仁寿县| 定日县| 丹棱县| 台州市| 淅川县| 阜宁县| 博白县| 滦平县| 正宁县| 沙河市| 兰西县|