Одна вещь, которую я хочу добавить, состоит в том, что если вы читаете официальную документацию в threading lib Python , рекомендуется избегать использования «демонических» потоков, когда вы не хотите, чтобы потоки заканчивались внезапно, флаг, который Паоло Ровелли упомянул .
Из официальной документации:
Потоки Daemon внезапно останавливаются при завершении работы. Их ресурсы (такие как открытые файлы, транзакции базы данных и т. Д.) Могут быть недоступны. Если вы хотите, чтобы ваши потоки прекратились изящно, сделайте их недемоническими и используйте подходящий механизм сигнализации, например Event.
blockquote>Я думаю, что создание демонических потоков зависит от вашего приложения, но в целом (и, на мой взгляд), лучше избегать их убийства или сделать их демоническими. При многопроцессорной обработке вы можете использовать
is_alive()
для проверки состояния процесса и «завершения» для их завершения (также вы избегаете проблем GIL). Но вы можете найти больше проблем, иногда, когда вы выполняете свой код в Windows.И всегда помните, что если у вас есть «живые потоки», интерпретатор Python будет работать для их ожидания. (Из-за этой демона может помочь вам, если не имеет значения, резко заканчивается).