環境:linux
一段執行時間很長的程式(用python做hive客戶端執行mapreduce) 在linux後台執行,把結果輸出到某檔案:
python ***.py > log.log&
遇到的問題,程式沒報錯,檔案裡卻什麼都沒有,沒有輸入進去。為什麼呢?
於是我首先嘗試用:
nohup python ***.py > log.log &
預料之中 還是不行。
於是我做實驗:
寫了個test.py:
import sys,time
from threading import thread
class worker(thread):
def run(self):
for x in xrange(0,111):
print x
time.sleep(1)
def run():
worker().start()
if __name__ == '__main__':
run()
每秒列印一次
我直接用python text.py 執行 沒問題 每秒輸出乙個數
但我在後台執行:
python test.py > log.log&
還是不行。開始不輸出 直到程式執行完,一次性的寫到log.log檔案了。
為什麼呢?
原因可能是python 的print 先寫到緩衝區了,還沒flush到檔案。
於是加了一行「sys.stdout.flush() 」 --在每次print後都flush一次。:
import sys,time
from threading import thread
class worker(thread):
def run(self):
for x in xrange(0,111):
print x
sys.stdout.flush()
time.sleep(1)
def run():
worker().start()
if __name__ == '__main__':
run()
問題解決。 Windows後台執行python程式
import win32serviceutil import win32service import win32event import time class smallestpythonservice win32serviceutil.serviceframework svc name small...
程式後台執行
常用的2種方法 1.screen 1 建立 screen,screen r 2 在 screen 內部執行程式,execute 3 ctrl a d 退出 screen 4 需要再次檢視程式執行狀態時候,screen r 2.nohup 範例 nohup execuname param 3 1 no...
python 後台執行
該方法時使用pm2程序管理器來執行python程式的,因為pm2管理器是基於node.js的,所以要先安裝node.js 安裝node 然後安裝pm2 最後使用pm2命令執行python程式就行了 如果想開機自啟動程式 linux系統使用上面的命令就行了 windows下使用批處理命令執行程式,然後...