2009-08-30 3 views
16

У меня возникли проблемы с отладкой приложения с несколькими процессами (в частности, с использованием пула процессов в многопроцессорном модуле python). У меня явный тупик, и я не знаю, что его вызывает. Трассировка стека недостаточна для описания проблемы, поскольку она отображает только код в модуле многопроцессорности.Методы многопроцессорной отладки

Существуют ли какие-либо инструменты python или вообще общие методы, используемые для отладки тупиков?

ответ

31

Yah, отладка тупиков - это весело. Вы можете установить уровень протоколирования выше - см the Python documentation для описания этого, но очень быстро:

import multiprocessing, logging 
logger = multiprocessing.log_to_stderr() 
logger.setLevel(multiprocessing.SUBDEBUG) 

Кроме того, добавить протоколирования что-нибудь в вашем коде, который имеет дело с ресурсом или этажерки, которые могут быть в раздор. Наконец, выстрелил в темноте: отбрасывание дочерних процессов во время импорта может вызвать проблему.

+2

Yep - много журналов, как ни крути, по-прежнему является лучшим общим подходом к изоляции и, в конечном итоге, обнаружению и устранению проблем с блокировкой ... откуда +1. многопроцессорность имеет определенные проблемы с тупиковой ситуацией с ее очередью, которые хорошо документированы - проверьте, что вы, возможно, не работаете с ними. –

3

Для того, чтобы избегать тупиков, в первую очередь, полезно изучать передовые методы, поскольку параллельная обработка действительно довольно тонкая. (Бесплатно) Little Book of Semaphores может быть очень приятным!

Смежные вопросы