2011-12-22 12 views
5

È necessario impostare un limite di tempo su una funzione python che utilizza alcuni processi di multiprocessing (non so se è importante). Qualcosa di simile a questo:Timeout di una funzione di multiprocessing

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 

mi guardo intorno la rete e ho trovato un time out decoratore ma sembra abbastanza difficile e verbose (sono newbie su decoratori). Quello che vorrei è una cosa semplice.

EDIT:

penso l'ho fatta troppo semplice. mio programma itera oltre la funzione di cui sopra e memorizza il risultato in una lista simile a questa:

while(something): 

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

    # if function timed out then skip 

    ris_list.append(retval) 

risposta

11

si dovrebbe essere in grado di farlo con questo codice:

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

Così, invece di impostare un timeout in la funzione, è possibile partecipare con un timeout del processo e se il processo non è terminato dopo tale timeout, quindi terminarlo.

Problemi correlati