0

我有兩個單獨的Python腳本和一個主腳本:如何處理兩個Python腳本之間的切換?

scriptA.py
scriptB.py
main.py

我想從早上5點運行scripA.py至凌晨零點和scriptB從上午12點到下午5點。我想寫一個腳本來爲我做這個。目前我試圖通過main.py來做到這一點。但沒有任何工作。我真正想要的是這樣的。

if time betwee 5am and 12am: 
    if scriptB running: 
     stop scriptB 
     execute scriptA 
    else: 
     execute scriptA 
if time between 12:01am and 4:99: 
    if scriptA running: 
     stop scriptA 
     execute scriptB 
    else: 
     execute scriptB 

如果您有任何其他建議來實現上述功能請告訴我。

+1

你在運行什麼操作系統?它必須是一個Python腳本或從另一個腳本調用一個函數好嗎?你能提供關於你的腳本是什麼樣子或做什麼的更多信息嗎? – mitoRibo

+2

除非您真的需要主腳本,否則我會使用任務調度實用程序(Unix:Cron,Windows:Task Scheduler,OS X:Launchd等)在適當的時間窗口內運行腳本A和B. – Apollo2020

+0

@rbierman操作系統:linux ..我的主腳本是一個python腳本,它不僅僅是調用另一個函數。整個腳本。一個scriptA正在做臉部檢測,scriptB正在做運動檢測。 –

回答

0

這是一個未經測試的想法,並希望得到反饋。總的想法是根據當前時間檢查運行哪個程序,然後等到時間切換。

CODE:

from datetime import datetime 
import subprocess 
import sys 

def check_time(): 
    script_type = '' 
    wait_time = None 
    now = datetime.now() 
    if 5 <= now.hour <= 23: 
     script_type = 'ScriptA' 
     end_time = now.replace(hour=23, minute=59, second=59, microsecond=999) 
     wait_time = end_time-now 
    elif 0 <= now.hour <= 4: 
     script_type = 'ScriptB' 
     end_time = now.replace(hour=3, minute=59, second=59, microsecond=999) 
     wait_time = end_time-now 

    return script_type,wait_time.seconds 


if __name__ == '__main__': 
    active_process = None 

    #Loop forever 
    while True: 

     #If there is an active process, terminate it 
     if active_process: 
      active_process.terminate() 
      active_process.kill() 

     #Start the correct script 
     script_type,wait_time = check_time() 
     if script_type == 'ScriptA': 
      active_process = subprocess.Popen([YOUR,COMMAND,A,HERE]) 
     elif script_type == 'ScriptB': 
      active_process = subprocess.Popen([YOUR,COMMAND,B,HERE]) 
     else: 
      sys.stderr.write('Some sort of error\n') 
      sys.exit(1) 

     #Wait until the next time switch to loop again 
     time.sleep(wait_time) 

請評論有任何疑問或讓我知道它是否工作,如果你已經嘗試實現它。

相關問題