Есть ли какие-либо причины не смешивать многопроцессорный и потоковый модули в Python

#python #windows #multithreading #python-3.x

#python #Windows #многопоточность #python-3.x

Вопрос:

Я рассматриваю возможность использования Python для реализации программы, которая требует обширной многопоточности. Другое требование заключается в том, что он будет выполняться на настольных компьютерах, поэтому из-за большого количества процессов приложение будет выглядеть беспорядочным и его будет сложнее отключить (в диспетчере задач). Поэтому я рассматриваю возможность использования как многопоточного, так и многопроцессорного модулей для уменьшения количества процессов. Насколько я понимаю, GIL будет применяться только к одному процессу. Мой вопрос: есть ли какие-либо причины не смешивать с использованием двух модулей?

Ответ №1:

Примечание: Это предупреждение не относится к Windows.

Будьте осторожны! Существует неприятная ошибка, связанная с блокировками при объединении многопоточности и многопроцессорности, которая также обнаруживается при использовании модуля ведения журнала. Я был укушен за последнюю неделю, когда дочерние процессы иногда зависали. Теперь, когда я отключил ведение журнала, пока все хорошо (хотя и не лучшее решение!).:

https://twiki.cern.ch/twiki/bin/view/Main/PythonLoggingThreadingMultiprocessingIntermixedStudy

http://bugs.python.org/issue6721

Комментарии:

1. ошибка 6721 не имеет ничего общего с многопоточностью в Windows

2. Верно, пропустил тег Windows.

3. Вы только что сэкономили мне часы отладки… Спасибо!

Ответ №2:

Кроме базового принципа KISS …. дерзайте, проблем возникнуть не должно.