Выключение многопроцессорной функции - PullRequest
6 голосов
/ 22 декабря 2011

Мне нужно установить ограничение по времени для функции Python, которая использует некоторые многопроцессорные функции (я не знаю, имеет ли это значение). Примерно так:

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

Я осматриваю сеть и нашел декоратор тайм-аута, но он выглядит довольно сложно и многословно (я новичок в декораторах). Что бы я хотел, это простая вещь.

EDIT:

Я думаю, я сделал это слишком просто. Моя программа перебирает вышеуказанную функцию и сохраняет результат в виде списка, подобного следующему:

while(something):

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

     # if function timed out then skip

     ris_list.append(retval)

1 Ответ

11 голосов
/ 22 декабря 2011

Вы можете сделать это с помощью этого кода:

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

Таким образом, вместо установки тайм-аута в функции, вы можете присоединиться к таймауту процесса, и если процесс не завершился послеэтот тайм-аут, а затем прекратить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...