Можно ли улучшить время выполнения вызова Python из Excel (через xlwings RunPython)?

Я написал скрипт Python, который использует библиотеку xlwings, чтобы получить входные данные функции из конкретной электронной таблицы. Идея состоит в том, чтобы запустить этот код из Excel (импортировав модуль xlwings как модуль VBA). Я могу либо запустить его так (то есть из Excel, используя команду RunPython в VBA), либо я могу установить Mock Caller при запуске скрипта в PyCharm, что упрощает ввод входных данных функции.

Эта настройка работает нормально, и при запуске скрипта в PyCharm в среднем это занимает около 2 секунд. Однако, когда я запускаю его из Excel, в среднем это занимает около 30 секунд (с учетом того же набора входных данных оба раза).

Таким образом, похоже, что время, необходимое Excel для вызова Python, относительно велико. Кто-нибудь может посоветовать, как ускорить это? Примерно столько времени требуется для запуска python из Excel?

заранее спасибо


person AButkov    schedule 29.09.2016    source источник


Ответы (1)


В настоящее время поведение xlwings по умолчанию заключается в запуске нового сеанса интерпретатора каждый раз, когда вы вызываете RunPython. Это, естественно, связано с накладными расходами, хотя в современных системах это обычно всего лишь дополнительные 2-3 секунды, а не то, что вы видите.
Однако в Windows вы можете переключить OPTIMIZED_CONNECTION = True в настройках VBA, которые затем будут использовать COM-сервер, который продолжает работать. в перерывах между звонками читайте об этом подробнее в документах.

person Felix Zumstein    schedule 29.09.2016