В параллельном коде на Python рабочий процесс, который завершает задачу позже, чем другой рабочий, сначала получает блок ⇐ Python
-
Гость
В параллельном коде на Python рабочий процесс, который завершает задачу позже, чем другой рабочий, сначала получает блок
Я новичок в параллельном программировании.
Мой код выглядит следующим образом
для будущего в as_completed(futures): с Task_lock: #сделай что-нибудь У меня есть следующий журнал, созданный на основе моего кода.
2023-09-21 21:43:49,133 - Рабочий-1 завершил расчет
21.09.2023 21:50:06,045 - Рабочий-2 завершил расчет
21.09.2023, 21:50:06,141 - Рабочий-2 вошел в блокировку задачи
21.09.2023, 21:50:06,605 - Рабочий-2 вошел в блокировку задачи
В 21:43:49 рабочий 1 завершает работу, но не входит в блокировку задачи. В 21:50:06 рабочий 2 завершает работу и входит в блокировку задачи раньше рабочего 1. Рабочий 1 входит в блокировку задачи после рабочего 2.
Итак, в течение 7 минут рабочий 1 ждал блокировки задачи, но получил ее только после того, как рабочий 2 пришел и получил доступ к блокировке.
Что может вызвать такую задержку? Разве необычна такая задержка? Я обеспокоен тем, что за это время работает меньше работников. Это кажется неэффективным.
Что может вызвать эту проблему? Есть ли способ смягчить это? Это вообще ошибка или особенность?
Должен добавить, что задачи, которые выполняют эти работники, иногда требуют много памяти, что иногда также приводит к использованию памяти подкачки. Может ли это объяснить, почему рабочие так долго ждут блокировки, не получая ее, пока другие рабочие не закончат вычисления и, следовательно, не освободят немного оперативной памяти?
Я новичок в параллельном программировании.
Мой код выглядит следующим образом
для будущего в as_completed(futures): с Task_lock: #сделай что-нибудь У меня есть следующий журнал, созданный на основе моего кода.
2023-09-21 21:43:49,133 - Рабочий-1 завершил расчет
21.09.2023 21:50:06,045 - Рабочий-2 завершил расчет
21.09.2023, 21:50:06,141 - Рабочий-2 вошел в блокировку задачи
21.09.2023, 21:50:06,605 - Рабочий-2 вошел в блокировку задачи
В 21:43:49 рабочий 1 завершает работу, но не входит в блокировку задачи. В 21:50:06 рабочий 2 завершает работу и входит в блокировку задачи раньше рабочего 1. Рабочий 1 входит в блокировку задачи после рабочего 2.
Итак, в течение 7 минут рабочий 1 ждал блокировки задачи, но получил ее только после того, как рабочий 2 пришел и получил доступ к блокировке.
Что может вызвать такую задержку? Разве необычна такая задержка? Я обеспокоен тем, что за это время работает меньше работников. Это кажется неэффективным.
Что может вызвать эту проблему? Есть ли способ смягчить это? Это вообще ошибка или особенность?
Должен добавить, что задачи, которые выполняют эти работники, иногда требуют много памяти, что иногда также приводит к использованию памяти подкачки. Может ли это объяснить, почему рабочие так долго ждут блокировки, не получая ее, пока другие рабочие не закончат вычисления и, следовательно, не освободят немного оперативной памяти?
Мобильная версия