Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jak mogę ustawić timeout na wykonywanie kodu R za pośrednictwem rpy2?

22 views
Skip to first unread message

marek

unread,
Mar 5, 2012, 12:58:22 PM3/5/12
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.
0 new messages