Как брать разные данные из файла разными потоками ?



  • Всем привет.

    У меня такая задача. Нужно брать из файла одну строку и делать с ней определенные действия.

    Надо пройти все строки до конца и завершить скрипт.
    В одном потоке я просто сую файл в список и попорядку беру строки.

    Но как делать в многопотоке ?

    Все потоки берут одни и теже данные и не понятна как сделать чтобы во всех потоках бралось попорядку данные а не одинаковые, тоесть если 1 поток взял строку, другой уже чтобы следующую взял.



  • @easy Привет
    Для этих целей есть ресурсы, там все уже учтено для работы в многопоточности
    https://www.youtube.com/watch?v=kW9ag7-3nDk



  • Так выходит что надо брать строчку из файла и опять его сохранять ? Также нагрузка бешенная будет вроде как



  • @easy посмотри видео для начала



  • @easy ресурсы-список создают табличку со списком в оперативной памяти(находится в быстрой оперативной памяти а не на диске),
    периодически синхронизируя свой список со списком в файле.
    ресурсы неплохо работают для своих задач.(данные из ram памяти с cpu явно быстрей работают)
    примерно так наверно.



  • еще стоит добавить что у ресурсов в отличии от простых списков в бас нет особых проблем с большими списками.



  • @tet-vivi ОТличный ответ.

    А как посоветуешь все же с большими списками работать ?

    У меня очень большие файлы.

    Вот так как я понял сделать надо ? ТОгда в каждом потоке будут разные данные.

    ccf8cf34-6062-4056-9629-3b28c7217f66-image.png

    brute_base - файл с данными.

    Или как мне вчера советовали , все эти данные вначале скрипта перенести в базу данных, а потом с базой данных работать ?

    Пытаюсь брут написать, вот вопрос с работой файлов непонятен, как и что.

    Или третий вариант сделать вообще разбивку на много файлов в начале скрипта, а после чего брать маленькие файлики и юзать по порядку, чтобы по 100500 раз не тратить данные на выгрузку файла в оперативку ?

    Как правильнее ?



  • @easy база или ресурс на своё усмотрение.
    у базы вроде меньше потребления оперативки и дополнительные фишки вроде сортировок и поиску по колонкам(т.е. есть 2 колонки логин и пароль. можно искать по колонке логин, получив в итоге всю строку/данные с этим логином. такого поиска в ресурсах нет)
    т.е. для простого хватит ресурсов, для более сложных база.



  • ну а базе пофиг на размеры ?
    Вот этого момента не понял.

    Тоесть в каком слушчае логики работы будет есть меньше ресурсов ?

    Предположим 3 ляма записей.

    Парсить строку из файла как я выше писал ? Парсить строку из ресурса и делать дела.

    Или всетаки вначале скрипта выгрузить все 3 ляма записей в базу, а после чего получать оттуда данные.

    У меня задача брать просто первую строку проверять логин пароль и брать следующую. Ну и так до конца



  • @easy said in Как брать разные данные из файла разными потоками ?:

    ну а базе пофиг на размеры ?
    Вот этого момента не понял.

    пока есть место на диске.

    Предположим 3 ляма записей.

    лучше использовать базу.

    как лучше загонять данные в базу в вашем случае не знаю.
    если есть возможность самостоятельно проделать, то я бы загонял данные без бас. вышло бы быстрей.
    в бас возможно использовать ноду.js и там поискать чего что бы напрямую загнать данные желательно.
    возможно база имеет cli интерфейс и через него можно залить данные файла.
    самый медленный варианты это ресурсы и списки через стандартные средства бас. при ваших объемах списки могут просто выводить из работы бас, а ресурсы будут отжирать оперативную память

    кроме монго есть другие базы данных. и не так давно вроде вышел модуль для работы с sql базами



  • можно большой файл разбить на небольшие файлы и в бас подключать уже эти маленькие файлы получая список.
    для разбития файла можно использовать BAT команды.


Log in to reply