В параллельном коде на Python рабочий процесс, который завершает задачу позже, чем другой рабочий, сначала получает блок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 пришел и получил доступ к блокировке.

Что может вызвать такую ​​задержку? Разве необычна такая задержка? Я обеспокоен тем, что за это время работает меньше работников. Это кажется неэффективным.

Что может вызвать эту проблему? Есть ли способ смягчить это? Это вообще ошибка или особенность?

Должен добавить, что задачи, которые выполняют эти работники, иногда требуют много памяти, что иногда также приводит к использованию памяти подкачки. Может ли это объяснить, почему рабочие так долго ждут блокировки, не получая ее, пока другие рабочие не закончат вычисления и, следовательно, не освободят немного оперативной памяти?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»