剛開始我在做爬蟲,爬蟲程式用python程式呼叫,但有時候爬蟲程式會死掉,掛了,所以程式會一直停留在那兒,該怎麼辦呢?我想可以建立乙個堅守程式,讓os.system()呼叫爬蟲程式能在一定時間內未執行完時,強制殺死,並重新開始,但根據結構化程式,順序執行沒辦法做到這一點,我知道肯定需要執行緒機制實現,網上找到了subprocess這個模組,它會建立乙個子程序,還有乙個類popen(),還是挺好用的。
#coding=utf-8
import subprocess
import time
#child=subprocess.popen(['ping','-t','5','www.google.com'])
pan=none
while pan!=0:
child=subprocess.popen('casperjs c:\\users\\minus\\desktop\\一次登入.js') #建立子程序
#print child.poll()
#print child.wait() #這裡不適合wait函式,因為這個函式會讓子程序進行完
#print child.returncode
time.sleep(10) #給10s的時間去執行子程序,時間內執行不了就重啟子程序
print 'parent'
#print child.returncode #獲取程序的返回值
print child.poll() #程序結束返回0 ,否則為nonoe
pan=child.poll()
if pan!=0: #程序沒結束
child.kill() #殺死這個程序 進入迴圈重新執行 child.terminate()這個也是可以的
關於subprocess模組的各個函式講解我這裡就不講了,可以參考
csdn文件
官方文件
上面的講解過程差不多,應該能了解了
返回結果是這樣的:
i've wait 2 seconds
start url:
parent
none
parent
none
i've wait 2 seconds
start url:
parent
none
parent
none
parent
none
parent
none
i've wait 2 seconds
start url:
parent
none
i've wait 2 seconds
start url:
Linux 守護程序建立
守護程序是在後台執行,不受使用者的控制 守護程序沒有任何存在的父程序。如果乙個程序想成為守護程序,有fork 建立 然後終止父程序,脫離資源。例子 void init daemon int pid,i pid fork if pid exit 0 結束父程序 else exit 1 失敗退出 是子程...
守護程序的建立
守護程序 守護程序又稱作精靈程序是乙個特殊的後台程序,他沒有控制終端,週期性的執行該執行的任務 我們可以看出守護程序是沒有tty控制終端的,並且它是沒有組長id的。建立乙個守護程序一般需要以下的步驟 1 umask 0 2 fork 乙個子程序,然後exit掉父程序,保證它不是組長程序。3 呼叫se...
建立守護式容器
一般的生產環境,肯定要用到守護式容器。根據書上的介紹 如下 docker run name test2 d ubuntu bin sh c while true do echo hello world sleep 10 done d 表示容器放在後台執行 輸出的結果是返回乙個容器id 用docker...