🖥 Python `multiprocessing` и ловушка, о которую бьются даже опытные разрабы
В старых версиях Python на Linux multiprocessing часто стартовал процессы через fork(). И вот где начинается боль. После fork() в дочернем процессе остаётся только один поток. Но состояние мира копируется как было: * lock мог быть захвачен * file descriptors всё ещё указывают на те же файлы * сокеты и буферы могут оказаться в странном состоянии * другой поток, который должен был отпустить lock, уже не существует Это поведение POSIX. Поэтому fork + threads — классический рецепт для редких, мерзких deadlock’ов...