Форум сайта python.su
Как сделать что бы программа написанная на питоне запускалась в определенное время, скажем через каждые 2 часа?
Офлайн
Lestatкакая ОС?
Как сделать что бы программа написанная на питоне запускалась в определенное время, скажем через каждые 2 часа?
Офлайн
а можно ли в самой програме вызвать скажем там какойто модуль с помощью которого можно задать чтобы программа запускалась через определенное время?
Офлайн
Lestatпосмотри gobject и нити
а можно ли в самой програме вызвать скажем там какойто модуль с помощью которого можно задать чтобы программа запускалась через определенное время?
Офлайн
import time
while True:
run_program()
sleep(some_time)
Офлайн
nssможно и так, но тогда в самом цикле тогда не будет возможности выполнять ещё какой-либо код
import time
while True:
run_program()
sleep(some_time)
Офлайн
всем огромное спасиба
Офлайн
вот тебе зарисовка:
import sched, time
from threading import Thread
from copy import copy
class SchedulerThread(Thread):
def __init__(self):
Thread.__init__(self)
self.scheduler = sched.scheduler(time.time, time.sleep)
self.__ssTasks =
self.__times = {}
def add(self, action, delaytime, singleShot=False, priority=1, *args):
event = self.scheduler.enter(delaytime, priority, action, args)
if(singleShot):
self.__ssTasks.append(event)
self.__times = delaytime
return event
def cancel(self, event):
self.scheduler.cancel(event)
def run(self):
while True:
queue = copy(self.scheduler.queue)
self.scheduler.run()
for task in self.__ssTasks:
try:
inx = queue.index(task)
del self.__times
del queue
except (IndexError, KeyError):
pass
self.__ssTasks =
for task in queue:
time, priority, action, args = task
delaytime = self.__times
event = self.scheduler.enter(delaytime, priority, action, args)
self.__times = delaytime
и для тестирования:
scheduler = SchedulerThread()
def print_time(x):
print “print_time%i:” % x, time.time()
def test():
scheduler.add(print_time,10,False,1,(1))
scheduler.add(print_time,7,False,1,(2))
scheduler.start()
test()
print “leave test():”, time.time()
Остоется только немного попилить и добавить синхронизацию.
Офлайн