У меня есть функция, которая использует многопроцессорность (в частности, joblib), чтобы ускорить медленную процедуру с использованием нескольких ядер. Он отлично работает; вопросов нет.
У меня есть набор тестов, в котором используется многопроцессорная обработка (в настоящее время только система multiprocessing.Pool(), но может изменить ее на joblib) для самостоятельного запуска каждой функции тестирования модуля. Он отлично работает; вопросов нет.
Проблема заключается в том, что теперь я интегрировал функцию многопроцессорности в набор тестов модулей, так что процесс пула запускает многопроцессорную функцию. Я хотел бы сделать так, чтобы внутренняя функция знала, что она уже многопроцессорна и не разворачивает больше своих вилок. В настоящее время внутренний процесс иногда зависает, но даже если этого не происходит, очевидно, что нет никакой выгоды для многопроцессорности в уже параллельной процедуре.
Я могу думать о нескольких способах (с файлами блокировки, настройке какой-то глобальной переменной и т.д.), чтобы определить состояние, в котором мы находимся, но мне интересно, есть ли какой-то стандартный способ понять это (либо в многопроцессорности PY или в joblib). Если он будет работать только в PY3, это будет хорошо, хотя, очевидно, лучше будут решения, которые также работают на 2,7 или ниже. Спасибо!