Различные потоки обращаются к одним и тем же словарям (только для чтения) - PullRequest
4 голосов
/ 06 октября 2011

У меня есть функция (например, myFunc), которая берет дату начала и окончания, итерирует по ней и обращается к некоторым словарям для обработки данных за этот период времени. Я хочу использовать потоки для распараллеливания этого кода.

Моя функция main () считывает данные из нескольких файлов и сохраняет их в словарях. Каждый раз, когда я звоню myFunc, я передаю эти словари и дату начала и окончания. Когда я вызываю myFunc с использованием нескольких потоков и передаю одни и те же словари, возникает ли конфликт? Эти словари используются только для чтения.

myFunc создает множество словарей, которые затем записывает их в другой файл. Этот выходной файл будет отличаться для каждого потока, но поскольку во всех потоках словари имеют одинаковые имена, будет ли конфликт? Теоретически я понимаю, что концепция многопоточности означает, что не должно быть конфликта, пока эти словари не являются глобальными. Но так как это моя первая попытка создания потоков, хотелось бы получить подтверждение.

Спасибо

1 Ответ

6 голосов
/ 06 октября 2011

Используя многопоточность, нет, у вас не будет проблем.Вы также не собираетесь достичь параллелизма.Глобальная блокировка интерпретатора (GIL) в Python позволяет обрабатывать только один поток в любое время.Если вы хотите истинную параллельную обработку, вам нужно взглянуть на многопроцессорный модуль.Он имеет возможность фактически использовать несколько процессоров на машине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...