|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||||
Замедление скрипта06.08.2019, 17:39. Показов 4684. Ответов 12
Метки нет (Все метки)
Добрый день. Решил немного освоить питон. Накидал небольшой скрипт который вытаскивает табличку из Excel файла. В файле строчек примерно до 3000.
чем дальше по файлу ползет скрипт, тем медленнее он выполняется. Такое ощущение, что он с каждым проходом от начала забора бегает. Читал, что такое можно поймать при использовании неизменяемых типов, пока не могу сообразить. Можете ткнуть мордой?
0
|
||||||
| 06.08.2019, 17:39 | |
|
Ответы с готовыми решениями:
12
Вызов скрипта из скрипта
Запуск скрипта из скрипта |
|
|
|
| 06.08.2019, 18:00 | |
Сообщение было отмечено _SayHello как решение
Решение
Подозреваю, обращение worksheet.cell медленное. Вызывается многократно. Поищите метод для поточного чтения всего листа сразу.
А зачем вообще так мучиться, почему бы не сохранить файл в .csv? И, кстати, модуль typing не для этого. Для этого - collections.namedtuple.
1
|
|
|
|
||
| 06.08.2019, 18:25 | ||
|
А так как код весьма странный... непитоничный от слова совсем.... добавить особо нечего.
1
|
||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|||||
| 06.08.2019, 23:45 [ТС] | |||||
|
dondublon,
По сути задача тривиальная. Есть xlsm или xlsx файл, в котором лежит таблица состоящая из N столбцов и M строк. N - известно, M - нет. В каждой строке лежит структура из N параметров. 1) Адрес 2) Описание 3) Тип 4) Параметр 1 5) Параметр 2 Эти параметры описывают один объект. Строки отсортированы по адресу. Некоторые строки могут иметь адрес, но иметь пустое описание - объект не существует, эти строки игнорируются. Тип и параметры могут быть записаны некорректно - эти строки тоже пропускаем. Задача по сути вытащить все валидные структуры параметров и переконвертировать в другой файл параметров поддерживаемый QSettings. Табличка имеет заголовки столбцов, но не обязательно находится в A1. Первый столбец и первая строка имеет значение в ячейке "Индекс". В общем небольшая прикладная задачка. Готовое решение не нужно. После Си и С++, нетипичная для меня проблема возникла, вот и решил спросить.
0
|
|||||
|
|
||||||||||||||||||||||||||||
| 07.08.2019, 02:16 | ||||||||||||||||||||||||||||
Сообщение было отмечено _SayHello как решение
РешениеЕсть pandas, в pandas есть read_excel. На выходе dataframe. Структура у который 100500 методов. То есть можно сделать что хочешь с данными. Но если длинно:
В print не нужно делать преобразование в строку. Само чтение по ячейкам, очевидно, неоптимальное (хотя, да, сами excel либы тоже делают это медленно). К тому ж некоторые Python либы, бывает еще страдают неуборкой мусора в циклических вызовах. Был бы файл с данными приложен - попробовал бы оптимизировать код. А так могу на кофейной гуще еще погадать... Добавлено через 56 минут P.S. Ваш подход с индексами и смещениями - типично сишный подход. В python он, как правило, не нужен. В python обходы структур делаются через итераторы. Можно итерировать не по объектам ячеек, а сразу получать их значения.
1
|
||||||||||||||||||||||||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||||||
| 07.08.2019, 13:03 [ТС] | ||||||||
|
Garry Galler,
Добавлено через 5 часов 33 минуты Garry Galler, dondublon, переписал маленько, теперь все отлично. Работает быстро)
0
|
||||||||
|
|
|||||||
| 07.08.2019, 13:35 | |||||||
|
Вот эти варианты абсолютно идентичны по результату. Но, очевидно, что первый самый простой.
0
|
|||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|||||||||||||||||||||||||||
| 07.08.2019, 15:19 [ТС] | |||||||||||||||||||||||||||
|
Garry Galler, Вообще я подумал, что если в файле табличка смещена от начала на rowOffset и colOffset, и при этом в столбцах с адресами < colOffset будет лежать какая либо бесполезная инфа, то используя такой цикл
Я такой логикой пользовался Вот например такая таблица:
("Индекс") (1) (2) (2, 3) Как в последнем определить какое из чисел невалидное? Добавлено через 31 минуту Garry Galler, Добавлено через 12 минут Garry Galler, а можно как то в данном цикле
0
|
|||||||||||||||||||||||||||
|
|
|||||||||||||||||||
| 07.08.2019, 16:12 | |||||||||||||||||||
1
|
|||||||||||||||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||
| 07.08.2019, 16:17 [ТС] | ||
|
Garry Galler,
А так и правда, особо не зная языка, кустарным способом удалось решить задачу за достаточно малое время. Порог вхождения и правда низкий)
0
|
||
|
|
||||||||||||
| 07.08.2019, 16:49 | ||||||||||||
|
# хотим получить срез таблицы c 4-ой строки
0
|
||||||||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 07.08.2019, 16:50 [ТС] | |
|
Garry Galler, ага, это я понял
0
|
|
|
|
||||||||||||
| 08.08.2019, 02:23 | ||||||||||||
1
|
||||||||||||
| 08.08.2019, 02:23 | |
|
Помогаю со студенческими работами здесь
13
Замедление действия Замедление процессора Замедление программы на VB Замедление интернета Замедление загрузки Windows 7 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|