Форум сайта python.su
Здравствуйте,
необходимо выполнять некоторые действия с переодичностью, допустим, раз в 2 минуты.
что можете предложить ?
идеальное решение должно потреблять минимальное колличество ресурсов.
я реализовал (естественно неправильно и криво) так:
our_time=time.localtime().tm_min
while 1:
if our_time % 2:
uptime=os.system("uptime > uptime_res.txt")
file=open('uptime_res.txt','r')
regexp=re.compile("\d\.\d\d").search(file.read())
la=regexp.group(0)
print la
if float(la)>=200:
os.system("killall -9 apache2")
print "FUCK!!!"
Отредактировано (Фев. 11, 2009 18:13:50)
Офлайн
omg, вы же не на bash'e программируете
sched модуль глянь и os.kill
код достоет места в wtf_code ;)
Офлайн
Фак май моск ))
Я бы посоветовал для начала отказаться от бесконечного цикла и воспользоваться кроном что бы запускать скрипт с переодичностью раз в две минуты..
Отредактировано (Фев. 11, 2009 19:37:18)
Офлайн
cron это конечно хорошо, только когда у серва LA больше 200 cron скрипт может и не запустить, а вот если он будет запущен уже это совсем другой разговор.
а по поводу os.kill - он убивает один процесс, мне нужно все. просто так мне кажется быстрее чем сначала искать пиды всех апачей и по очереди их убивать, если неправ - обьясните
за sched спасибо, буду пользовать.
ЗЫ: бесконечный цикл нужен был чтобы выразить важность задачи :)))))))))))
Отредактировано (Фев. 11, 2009 21:04:02)
Офлайн
pochechyevЧто значит LA?
cron это конечно хорошо, только когда у серва LA больше 200 cron скрипт может и не запустить
Офлайн
ZANпрошу прощения.pochechyevЧто значит LA?
cron это конечно хорошо, только когда у серва LA больше 200 cron скрипт может и не запустить
Офлайн
Теперь понял oad verage из uptime - нужно было глянуть код в начале ветки.
Спасибо
LA = 200 - насколько я понимаю - это ооочень высокий параметр :/
Отредактировано (Фев. 12, 2009 00:47:50)
Офлайн
Свой собственный шедулер так или иначе будет сводиться к выполнению бесконечного цикла.
while 1:
#put your code here
time.sleep(timeout)
while event.isSet():
#put your code here
event.wait(timeout)
Офлайн
Twistеd callLater наше все :)
Офлайн
to lorien: Ваш вариант значительно круче, буду использовать, спасибо.
to ZAN: где почитать про Треды ? как использовать, что дает и т.д. ? спасибо
Офлайн