Есть ли способы ускорить pexpect или использовать встроенную функцию python? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть интерактивная консольная программа, из которой мне нужно извлечь данные.Я ввожу идентификационный номер, и он печатает около 10 строк текста, который я прочитал, а затем повторяю.Ранее я писал программу на C и использовал QProcess.Я портирую код на python.Я не могу использовать popen.communicate, потому что он интерактивный (мне нужно отправить более одного ввода).

Код выглядит примерно так:

import pexpect
p=pexpect.spawn(exe_path)
for idnumber in idlist:
    p.write(idnumber)
    p.expect("Enter ID number:")
    text=p.before
    ... process text ...

Сейчас требуется 18 секунд, чтобысделать 100 итераций цикла.Я попытался удалить всю часть кода "... process text ...", и это не изменило скорость.Мой C занимает менее секунды, чтобы обработать 2500 итераций.Я также пытался реализовать с использованием QProcess, и это также завершается менее чем за секунду.

...