Многопроцессорные методы отладки - PullRequest
18 голосов
/ 30 августа 2009

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

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

Ответы [ 2 ]

33 голосов
/ 30 августа 2009

Да, отладка тупиков - это весело. Вы можете установить более высокий уровень ведения журнала - см. документацию по Python , чтобы получить его описание, но очень быстро:

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

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

5 голосов
/ 30 августа 2009

Во-первых, чтобы избежать тупиков, полезно изучить передовой опыт, поскольку параллельная обработка действительно довольно тонкая. * (Бесплатно) Маленькая книга семафоров может быть очень приятным чтением!

...