170 похожих чатов

Применил вроде бы все советы из чата, скорость улучшилась только

до 22 минут на 100тыс записей
Единственное не смог применить совет @evle_zzz про контекстный менеджер, т.к не очень понял как передавать туда n. Вместо этого закрываю файл вручную

Не подскажете остались ли еще какие-то узкие места которые не учел? Вот текущий код

for row in reader: #csv.reader

cur_row = []
for s in zip(row, order):
cur_row.append(get_hash(s[0]) if s[1][1] else s[0])
writer.writerow(cur_row)


if n % 100000 == 0:
now = datetime.now()
while last_time and last_time == now:
time.sleep(5)
now = datetime.now()
last_time = now
if fw:
fw.close()
new_filename = f'{now}.csv'
out_path = os.path.join('out', new_filename)
fw = open(out_path, 'w', encoding='utf-8')
writer = csv.writer(fw, delimiter=';')

n += 1

15 ответов

24 просмотра

Передавать — параметром. Ты ж в open имя файла передаёшь как-то, вот будет маска файла и количество.

Сергей- Автор вопроса
evle
Передавать — параметром. Ты ж в open имя файла пер...

надо попробовать, но мне кажется по сравнению с использованием просто close это не даст выигрыша по времени хотя код будет и красивее

А что тут действительно за цирк с sleep?

Сергей- Автор вопроса
evle
А что тут действительно за цирк с sleep?

Просто чтобы в имени нового файла было другое время (там минуты, я в коде это сократил), а как можно красивее написать это?

Сергей
Просто чтобы в имени нового файла было другое врем...

O_O. То есть вместо того чтобы придумать как имя файла формировать неповторяющееся, ты решил каждый раз продалбывать по 5 секунд? Гениально.

Сергей- Автор вопроса
evle
O_O. То есть вместо того чтобы придумать как имя ф...

Так указано в требованиях: файлы отличаются только временем

Сергей
Так указано в требованиях: файлы отличаются только...

Ну микросекунды добавь, если настолько взаимоисключающие параграфы. Это ж совсем дичь получилась.

Сергей- Автор вопроса
evle
Ну микросекунды добавь, если настолько взаимоисклю...

Детализация до минут. Почему дичь если одновременно обрабатывается только один файл (т.е спать скорее всего не придется)?

Сергей
Детализация до минут. Почему дичь если одновременн...

Такие требования надо уточнять. Если одновременно "не более стольки-то записей" и "файлы отличаются только именем" — кто-то облажался при постановке задачи. Не надо решать подобные вопросы методом "а подождём следующую минуту".

Сергей- Автор вопроса
evle
Такие требования надо уточнять. Если одновременно ...

Не специалист конечно но не вижу ничего ужасного в ожидании, если одновременно обрабатываем только один файл.. 22 минуты настораживают больше

Сергей- Автор вопроса
Сергей
Не специалист конечно но не вижу ничего ужасного в...

Тем более это явно на всякий случай, 100тыс явно больше минуты обрабатываются

Сергей
Не специалист конечно но не вижу ничего ужасного в...

Любое ожидание вида "нифига не делаем, хотя работы полно и её можно делать" — это косяк. Косяк совершенно непростительный.

Сергей
Тем более это явно на всякий случай, 100тыс явно б...

Компы ускоряются. Через какое-то время данных будет больше, кто-нибудь полезет это оптимизировать и будет удивлён.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта