|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||||
Замедление скрипта06.08.2019, 17:39. Показов 4622. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|