Как назначить функцию с именем аргумента ключевого слова переменной [python 2.7]? - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь написать функцию func_timeout () , которая должна остановить другую функцию после указанного тайм-аута. Использование многопроцессорной функции bar_timeout в основном делает это для функции bar () .

In func_timeout () цель target =bar Аргумент должен быть назначен в качестве основного аргумента (что-то вроде того, что нужно видеть в последних строках кода).

Есть идеи, как с этим справиться?

def bar(q):
    for i in range(10):
        time.sleep(1)
        if i==5:
            q.put(1)
            break


def bar_timeout(timeout=10):
    print("start")
    q=multiprocessing.Queue();
    p = multiprocessing.Process(target=bar,args=(q,))
    p.start()
    p.join(timeout) 
    if p.is_alive():
        print "process alive, killing it"
        p.terminate()
        print("process terminated")
        return 0
    else:
        try:
            a=q.get()
            print("got q value")
            return a
        except:
            print("Exception raised")
            return 0  

def func_timeout(timeout=10, keywordparameter={'target':'bar'}:
     ...see above
     p = multiprocessing.Process(keywordparameter,args=(q,))  
     ...see above
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...