marek
unread,Mar 5, 2012, 12:58:22 PM3/5/12You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Witam,
Chciałbym zabić wykonywanie kodu R odpalanego za pośrednictwem
robjects.r. Przetestowałem, że pewien kod R wykonuje się przez
maksymalnie 5 sekund. Jeśli czas ten przekroczy 10 sekund chciałbym
zabić proces wykonywania kodu R oraz rzucić wyjątkiem z poziomu
pythona. Kod R mam w stringu, odpalam tak:
import rpy2.robjects as robjects
robjects.r('tu jest kod, którego wykonanie trwa 5 sek - chcę zabić
proces, jeśli czas wykonania przekroczy 10')
Obsługa timeoutu za pomocą signal.alarm nie działa. Kiedy python
uruchamia środowisko R przestaje aktywnie kontrolować ilość sekund
swojego wykonania, dopiero po wykonaniu całego kodu R następuje
odświeżenie informacji o stanie. Czyli jak ustawię signal.alarm(5) a
kod R będzie wykonywał się dłużej niż 5 sekund - nie nastąpi
przerwanie jego działania. Przerwanie nastąpi dopiero po wykonaniu R.
Chciałbym przy tym ominąć implementację limitu czasowego na wykonanie
kodu w samym R, ponieważ mam tam sporo analityki statystycznej i nie
chciałbym jej dodatkowo zaciemniać. Oczywiście jeśli to jedyne
rozwiązanie to trudno, ale sądzę, że nie jest to tak wyszukany problem.