Профиль GUI приложения начальной загрузки - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть несколько приложений, которые страдают от очень медленного времени загрузки.

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

Конечно, можно было бы добавить "sys.exit", где я хочузаставить его выйти, но я должен изменить код.

Есть ли способ заставить файл выйти при некоторых условиях без его изменения?

1 Ответ

0 голосов
/ 13 ноября 2011

Хорошо, фактически установить «точку выхода» именно там, где я хочу, не касаясь кода, не так тривиально.

Однако, я думаю, это можно сделать, поиграв с sys.settrace , как показано здесь http://www.doughellmann.com/PyMOTW/sys/tracing.html

Так что решение для меня - на самом деле изменить код, просто добавив строку выхода в какой-то момент.

Я хотел использовать difflibно у него нет функций исправления, поэтому я создал небольшой скрипт ниже, который вкратце: - читает файл - вставляет / удаляет одну строку (при вставке с тем же отступом, что и предыдущая строка) - переписывает его

#TODO: must make sure about the indentation
import argparse
import re
import sys

PATCH_LINE = "import sys; sys.exit(0)  # PATCHED"


def parse_arguments():
    # take the file and the line to patch, or maybe we can take a
    # diff file generated via uniform_diff
    parser = argparse.ArgumentParser(description='enable and disable the automatic exit')
    parser.add_argument('file', help='file to patch')

    parser.add_argument('line', help='line where to quit')

    parser.add_argument('-m', '--msg',
                        default=PATCH_LINE)

    parser.add_argument('-d', '--disable',
                        action='store_true')

    return parser.parse_args()


if __name__ == '__main__':
    ns = parse_arguments()
    text = open(ns.file).readlines()
    line_no = int(ns.line)

    if ns.disable:
        # the line should not be necessary in that case?
        text.remove(text[line_no])
    else:
        # count spaces
        prev = text[line_no - 1]
        m = re.match('\s*', prev)
        to_insert = m.group() + ns.msg
        print("inserting line %s" % to_insert)
        text.insert(line_no, to_insert)

    open(ns.file, 'w').writelines(text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...