Как работать с тхт файлами с большим весом

Jack_Dream

Client
Регистрация
05.12.2021
Сообщения
347
Благодарностей
28
Баллы
28
Есть файл на 10М строк, бот тупит при заборе строк с него, как правильно организовать работу бота, с таким файлом? Если разбить на несколько файло поменьше как тогда дать боту понять что брать строки с любого файла?
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
В sqlite/sql базу закидывай и бери с неё.
 
  • Спасибо
Реакции: kagorec и Jack_Dream

Jack_Dream

Client
Регистрация
05.12.2021
Сообщения
347
Благодарностей
28
Баллы
28
зеленый я еще для sql)
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
разбить на файлы до 20Мб это самый наилучший размер по скорости, проверенно на опыте )
берешь все файлы из папки в список потом каждый файл в список и все
 
  • Спасибо
Реакции: Jack_Dream

Jack_Dream

Client
Регистрация
05.12.2021
Сообщения
347
Благодарностей
28
Баллы
28
берешь все файлы из папки в список потом каждый файл в список и все
Сделать из всех файлов 1 список внутренний на 10М? Не подойдет, мне надо чтобы у всех потоков был доступ к файлу, и каждый поток берет по чуть чуть строки в работу
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
через C# можно забирать строки из файла построчно. Для всех потоков организовать счетчик в глобалке и работать через него
 

Jack_Dream

Client
Регистрация
05.12.2021
Сообщения
347
Благодарностей
28
Баллы
28
Я думаю надо как-то добавлять строки в файл от куда бот берет, прямо на ходу, только как это сделать, есть идея батником мерять измерять файл, когда мало строк перекидать туда по 1м строк напрмер чтобы файл не сильно большой был, пока не могу найти какоц командой перекидать строки))
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
мне надо чтобы у всех потоков был доступ к файлу
ну а в чем проблема,
  1. разбить на файлы
  2. брать новый файл и добавлять его в привязанный список
  3. из привяз. списка брать кучей потоков с удалением
  4. когда список заканчивается, брать новый файл и привязивать его к тому же списку
и все без глобалок

89028
 
  • Спасибо
Реакции: Jack_Dream

Jack_Dream

Client
Регистрация
05.12.2021
Сообщения
347
Благодарностей
28
Баллы
28
когда список заканчивается, брать новый файл и привязивать его к тому же списку
Мониторить количсетво строк, ниже 10к упало, брать все строки с файла и дописать в рабочий, вот только как понять боту если есть 10 маленьких файлов по 20мб, какой брать, типа функция взять строки с любого файла в папке, после взятия удалять файл
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 482
Баллы
113
что значит какой брать
в списке они идут поочередно, хочешь по очереди, хочешь рандомно
и что значит как боту понять, когда строки в списке закончатся, он выдаст ошибку (красную ветку) и вот по ней организовать добавление нового файла
 

Jack_Dream

Client
Регистрация
05.12.2021
Сообщения
347
Благодарностей
28
Баллы
28
Есть уточнение, сделаю список файлов, по списку буду брать вырезать строки, и удалять файл, вопрос как исключить момент что два потока одновреммено увидят что надо добавить строки с файла и оба загрузят по пачке строк и опять получится большой файл и бот будет тупить
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)