Python dosyalarını periyordik olarak çalıştırma

musti1971

Megapat
Katılım
12 Ekim 2014
Mesajlar
149
Daha fazla  
Cinsiyet
Erkek
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?
 
Son düzenleyen: Moderatör:
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
 
Python:
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]
 
Son düzenleme:
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.


Python:
import time

def setInterval(callback, delay):
    def interval():
      callback()
      time.sleep(delay)
      interval()
    return interval

def testFn():
  print("hi")

if __name__ == '__main__':
  start = setInterval(testFn, 1)
  print("main")
  start()
 
Yanlış yazmışım özür dilerim. Sürekli çalışmasını istyorum sadece belirlediğim saatlerde yenilemesini istiyorum. Nasıl yapabilirim?
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.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı