Если вы запускаете код, который, как вы ожидаете, умрет через определенное время, вы должны написать его правильно, чтобы не было никаких негативных последствий при завершении работы, независимо от того, является ли он потоком или подпроцессом. Шаблон команды с отменой был бы здесь полезен.
Итак, это действительно зависит от того, что делает поток, когда вы его убиваете. Если это просто хруст номера, кого это волнует, если вы его убьете. Если он взаимодействует с файловой системой, и вы убиваете его, то, возможно, вам следует действительно переосмыслить свою стратегию.
Что поддерживается в Python, когда дело доходит до потоков? Демон темы и соединения. Почему python позволяет основному потоку завершиться, если вы присоединились к демону, пока он еще активен? Потому что понятно, что кто-то, использующий потоки демона, (будем надеяться) напишет код так, чтобы это не имело значения, когда этот поток умирает. В этом контексте вполне допустимо дать тайм-аут для объединения, а затем дать основному объекту умереть и, таким образом, взять с собой все потоки демонов.