|
2 / 2 / 0
Регистрация: 10.09.2023
Сообщений: 70
|
|||||||||||
Многопоточная обработка большого файла04.04.2025, 12:22. Показов 5745. Ответов 33
Всем привет. Передо мной стоит такая задача. Есть очень большой файл с отсортированными по возрастанию числами типа double в тектовом формате, разделенными символом новой строки. Нужно посчитать среднее и стандартное отклонение по этому файлу, обязательно параллельно.
Сначала я написал однопоточную версию, которая использует алгоритм Вэллфорда для подсчета стандартного отклонения:
Подскажите в чем причина, должно ли быть так? Может нужно вообще иначе распраллеливать? Просто я впервые столкнулся с необходимостью многопоточной обработки очень больших файлов.
0
|
|||||||||||
| 04.04.2025, 12:22 | |
|
Ответы с готовыми решениями:
33
Многопоточная обработка блоков данных Обработка большого xml файла в CBuilder6 TCP обработка большого файла |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 04.04.2025, 17:56 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 10.09.2023
Сообщений: 70
|
|
| 04.04.2025, 18:01 [ТС] | |
|
Мда, я затупил, извиняюсь. Работает, если число потоков кратно трем.
Добавлено через 1 минуту Нет, оказывается правильно) Добавлено через 49 секунд Почему никак? У меня ж вроде получилось.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 04.04.2025, 18:08 | |||
|
Даже если файл имеет строки равной длины, в символах. То делить файл можно только на части кратных этой длине. Иначе вы "порежете" числа.
0
|
|||
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
|
|||
| 04.04.2025, 18:22 | |||
0
|
|||
|
2 / 2 / 0
Регистрация: 10.09.2023
Сообщений: 70
|
|
| 04.04.2025, 18:26 [ТС] | |
|
0
|
|
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
|
|
| 04.04.2025, 18:39 | |
Сообщение было отмечено MeXaL как решение
Решение
MeXaL, а если посмотреть на результирующее количество чисел по фрагментам, насколько они "плохи", среди них попадаются нолики или все фрагменты содержат хоть сколько-нибудь чисел? Может тут какой-нибудь эффект связанный с сиком по текстовому файлу?
1
|
|
|
2 / 2 / 0
Регистрация: 10.09.2023
Сообщений: 70
|
||||||||||||||||
| 04.04.2025, 19:17 [ТС] | ||||||||||||||||
|
Ну да, все просто. Почему я сам не посмотрел. В некоторых потоках std::ifstream сразу же фэйлится. И видимо понятно почему. В некоторых местах указатель буффера может попасть на точку, либо символ 'E', либо '+', либо '-' в тектовом представлении числа))) Поэтому писать
Заменил на
Можно более элегантно:
Проблема решилась, спасибо за помощь!
0
|
||||||||||||||||
| 04.04.2025, 19:47 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 10.09.2023
Сообщений: 70
|
||
| 04.04.2025, 21:34 [ТС] | ||
|
А почему убийца HDD? Что не так?
Добавлено через 1 час 32 минуты
0
|
||
|
2 / 2 / 0
Регистрация: 10.09.2023
Сообщений: 70
|
|
| 05.04.2025, 10:10 [ТС] | |
|
0
|
|
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 05.04.2025, 10:36 | |
|
MeXaL, HDD, в отличие от SSD, имеет механическую часть. И если в двух потоках с двух удалённых друг от друга частей файла начать читать данные, механика будет бешено двигаться туда-сюда.
0
|
|
|
2 / 2 / 0
Регистрация: 10.09.2023
Сообщений: 70
|
|
| 05.04.2025, 10:52 [ТС] | |
|
Ясно, а что тогда будет лучше?
0
|
|
|
6301 / 3023 / 1053
Регистрация: 01.06.2021
Сообщений: 11,475
|
||
| 05.04.2025, 10:57 | ||
|
0
|
||
|
2 / 2 / 0
Регистрация: 10.09.2023
Сообщений: 70
|
|
| 05.04.2025, 11:18 [ТС] | |
|
Спасибо тебе/
0
|
|
| 05.04.2025, 11:18 | |
|
многопоточная программа Многопоточная запись в TRichEdit Многопоточная программа работает через раз. SQLITE и многопоточная работа Реализация класса "Многопоточная очередь" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|