Merhabalar. Elimde 4 tane py dosyası var. Sanal bligisayarım var ve sanal bilgisayarda bunların periyordik olarak saat 3-4-5 ve 6 da çalışmasını istiyorum. Nasıl yapabilirim?
Time kütüphanesi ve if koşulları kullanarak belki yapılabilir. import time kütüphanesini dahil edin. simdikizaman=datetime.now(). daha sonra simdikizaman parametresi if bloklarıyla kontrol edilebilir
from datetime import datetime
import time
import os
allScriptsRun = False
while not allScriptsRun:
now = datetime.now().strftime("%H:%M:%S")
#Hedef saatleri kendine göre belirle
if (now == '14:00:00'):
os.system("py script1.py")
elif (now == '15:00:00'):
os.system("py script2.py")
elif (now == '16:00:00'):
os.system("py script3.py")
allScriptsRun = True
time.sleep(1)
"if" bloklarını saat bazlı ayırabilirsin. Ben açıklayıcı bir örnek olması açısından tek if bloğu içerisinde yazdım.
[CODE lang="python" title="Cronjob Example"]from datetime import datetime
from time import sleep
def run():
pass # yapilacak isler
while True:
now = datetime.now().strftime("%H:%M:%S")
if now == "15:00:00" or now == "16:00:00" or now == "17:00:00" or now == "18:00:00":
run()
sleep(1)
else:
sleep(1)[/CODE]
Mission Critical değilse while True gereksiz bir kontrol aralığı.
5 veya 10 saniyede 1 kez kontrol fazlasıyla yeterli olacaktır. Python native olarak setTimeinterval'a sahip değil ancak Thread kullanarak basit şekilde implement edilebilir.
Yazdığım koddaki while döngüsünü durdurmadan çalıştırırsak dediğiniz gibi olur.
Python:
from datetime import datetime
import time
import os
while True:
now = datetime.now().strftime("%H:%M:%S")
#Hedef saatleri kendine göre belirle
if (now == '14:00:00'):
os.system("py script1.py")
elif (now == '15:00:00'):
os.system("py script2.py")
elif (now == '16:00:00'):
os.system("py script3.py")
time.sleep(1)
Edit: Sanırım çalışan scripti durdurup bir daha çalıştıracaksınız. Bunun için elinizdeki Python scriptlerine şu kodu ekleyin:
Python:
from datetime import datetime
import time
while True:
now = datetime.now().strftime("%H:%M:%S")
#Scriptin çalışmayı durduracağı saati girin
if (now == '14:00:00'):
exit()
time.sleep(1)
Ben burada while kullandım çünkü sizin kodunuzda ne var bilmiyorum. Sürekli çalıştığına göre tekrar eden bir yapının olması lazım. While yerine o yapının içerisinde saat kontrolü yapın. Daha sonra üstte yazdığım kodu çalıştırırsınız.