Python GUI зависает во время eval - PullRequest
1 голос
/ 29 июля 2011

Итак, я создаю графический интерфейс в Python с использованием Tkinter, который будет использоваться для загрузки во время выполнения текстового файла со списком сценариев Python.Затем сценарии будут выполнены и вернут число, указывающее, были ли они успешными или нет (код возврата не будет возвращен с sys.exit, файлы сценариев будут иметь функцию, которая будет вызываться и возвращать 1 или 0).Во время выполнения я использую exec для импорта файлов сценариев как модулей, а затем вызываю функцию внутри модуля с помощью eval.

def runtest(test):
    exec 'import ' + test
    func=test+'.'+test+'()'
    return eval(func)

Проблема в том, что весь пользовательский интерфейс зависает во время оценки, но я бы предпочел, чтобы он работална заднем фоне.Буду очень признателен, если кто-нибудь знает, как это сделать.

1 Ответ

0 голосов
/ 29 июля 2011

Там может быть 2 способа.

  1. Использовать многопроцессорную библиотеку Python http://docs.python.org/library/multiprocessing.html

  2. Поток Python.

Вариант 1 хорош по сравнению с Вариантом 2 из-за GIL Python.

из многопроцессорного процесса импорта

def runtest(test):
   exec 'import ' + test
   func=test+'.'+test+'()'
   return eval(func)

if __name__ == '__main__':
p = Process(target=runtest, args=('mytest',))
p.start()
p.join()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...