2011-12-22 9 views
5

Bazı çok işlemcili öğeler kullanan bir python işlevinde bir zaman sınırı ayarlamam gerekiyor (Önemli olup olmadığını bilmiyorum). Böyle bir şey:Çoklu işlem işlevini zamanlama

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 

ben net etrafıma bakıyorum ve dekoratör bir zaman öğrendim ama (ben dekoratörler üzerinde acemi olduğum) oldukça zor ve ayrıntılı görünüyor. İstediğim basit bir şey.

DÜZENLEME:

Ben bunun biraz fazla basit yaptığımı düşünüyorum. Böyle bir liste şey yukarıdaki fonksiyonu ve mağaza sonucun üzerinde Programım dolaşır:

while(something): 

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

    # if function timed out then skip 

    ris_list.append(retval) 

cevap

11

Sen yapabilecektir gerektiğini bu kodla:

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

Bunun yerine bir zaman aşımı ayarı işlev, bir zaman aşımı sürecine katılabilirsiniz ve işlem bu zaman aşımından sonra bitmemişse, sonlandırın.