Time out a regular expression in Python 2.6.4?

Steve Holden steve at holdenweb.com
Tue Feb 16 02:06:08 CET 2010


Jonathan Gardner wrote:
> On Feb 15, 7:59 am, Steve Holden <st... at holdenweb.com> wrote:
>> pyt... at bdurham.com wrote:
>>> Is there any way to time out a regular expression in Python 2.6.4?
>>> Motiviation: Our application allows users to enter regular expressions
>>> as validation criteria. If a user enters a pathological regular
>>> expression, we would like to timeout the evaluation of this expression
>>> after a short period of time.
>> Python itself does not contain any mechanism to terminate an operation
>> if it takes too much time.
>>
>> One approach would be to run the regex in a subprocess, and apply
>> process limits to terminate that subprocess if it ran too long.
>>
>> This group being what it is you are likely to receive other, better
>> suggestions too.
>>
> 
> I'm not sure how exactly the re module is implemented, but since I
> assume a great chunk is in C code, you may get away with a single
> process and multiple threads. One thread will watch the process, or
> have a timer event set to go off at a certain point. The other will
> actually run the regex and get killed by the timer process if it
> doesn't finish in time.

That would be a great idea if it were possible to kill a thread form
outside. Unfortunately it's not, so the best you can do is set a flag
and have it queried periodically. This is not practical during re matching.

regards
 Steve
-- 
Steve Holden           +1 571 484 6266   +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010  http://us.pycon.org/
Holden Web LLC                 http://www.holdenweb.com/
UPCOMING EVENTS:        http://holdenweb.eventbrite.com/




More information about the Python-list mailing list