При использовании multiprocessing может ли одновременное считывание из файлов тормозить программу?
Есть скрипт, которые переименовывает некоторые значения. Сами значения для переименования лежат в csv-файлах. Есть распараллеленная версия скрипта, есть последовательная. Последовательная отрабатывает с большей скоростью. Осознаю, что причин может быть масса, но сейчас по некоторым причинам меня интересует только один вопрос. Если два процесса в один и тот же момент захотят прочитать файл, будет блокировка, и это затормозить работу скрипта, правильно?
Непонятно что ты там переименовываешь. CSV файлы - это файлы последовательного доступа. И чтобы изменить 1 строчку и 1 значение тебе надо создать копию файла с изменением. И оригинал убить. В этом кардинальное отличие от баз данных где файлы имеют блочную структуру и изменнеие касается всегоа 1 db-block (обычно кусочек файла кратный 4-8 килобайт).
Вот предлагаю обсудить этот вопрос а уже потом подойти к ... муль-ти-про-цессингу или как ты там написал.
Я неправильно выразился. Сами файлы только считываются. Из них берутся шаблоны для переименования. Если подробнее, сама программа переносит значения из таблицы одной базы данных в точно такую же таблицу другой базы данных, при некоторых условиях переименовывая отдельные значения. Порядок действий следующий: Получаю первую строку таблицы, и дальше проверяю каждый столбец на необходимость переименования. Если же необходимость есть, вызывается функция, которая заменяет данные по шаблону. Именно ее я и вызываю в нескольких процессах. Когда все столбцы проверены, и все значения в них заменены, берется следующая строка и так далее.