6

I need to set a time limit on a python function which use some multiprocessing stuff (I don't know if it matters). Something like this:

function(a_list):

     p1 = Process(a_list[0:len(a_list/2)])
     p2 = Process(a_list[len(a_list)/2: len(a_list)])

     //start and join p1, p2

I look around the net and I found a time out decorator but it looks quite tricky and verbose (I'm newbie on decorators). What I'd want is a simple thing.

EDIT:

I think I made it too simple. My program iterates over the above function and store result in a list something like this:

while(something):

     retval = function(some_list)  # here I need the time out thing

     # if function timed out then skip

     ris_list.append(retval)
blueSurfer
  • 5,651
  • 13
  • 42
  • 63
user1017220
  • 143
  • 2
  • 6

1 Answers1

11

You should be able to do that with this code:

process.join(timeout)
if process.is_alive():
    process.terminate()

So instead of setting a timeout in the function, you can join with a timeout the process and if the process hasn't finished after that timeout, then terminate it.

jcollado
  • 39,419
  • 8
  • 102
  • 133