2016-09-06 19 views
1

首先簡短地概括超過我目前的目標是:控制蟒蛇過程形成另一個Python文件

我想用一個調度程序來執行一個簡單的Python程序的每一秒。該程序讀取一些數據並在數據庫中輸入結果。由於計劃任務將在樹莓派上運行數天,因此該過程應在後臺開始。因此,我想創建一個可以啓動,停止並從後臺作業獲取當前狀態的python文件。此外,應該可以在不停止後臺作業的情況下退出並重新輸入控制文件。

目前我試過apscheduler每秒執行一次python文件。實際的問題是,我無法訪問當前的python文件,從另一個外部文件控制狀態。總的來說,我發現沒有真正的解決方案,我可以如何控制一個子進程形式的外部文件,並在重新啓動控制python文件後再次找到相同的子進程。

編輯:

所以,總體來說,據我得到了它,現在我能找到他的PID當前進程。有了這個能夠發送終止信號到當前進程。在我的預定文件中,我能夠catch these signals並以正常方式關閉程序。

回答

1

控制(啓動,重新啓動,停止,計劃)後臺進程使用subprocess。這是子過程'popen with timeout'的example

要傳遞schedulerbackground job之間的某些數據,請使用IPC機制之一,例如套接字。

+0

可以控制進程我可以使用子進程,但是如何在重新啓動控制器(mainprocess)後再次找到正在運行的子進程? –

+0

不,使用python子進程創建的子進程通常會在控制程序結束後結束。 – AbdealiJK

+0

@VeitBjarsch你可以使用像'ps'這樣的linux工具,參見[example](http://stackoverflow.com/questions/2940858/kill-process-by-name)。 –