No seu programa python, você precisa chamar as funções shutdown e close para o soquete, para que o SO saiba que seu programa não está mais sendo usado e ele irá desalocar o soquete se nada estiver sendo usado após chamar essas funções. Se você não conseguir chamar essas funções quando o programa for encerrado, você acabará tendo que esperar no SO para limpar os soquetes alocados. Mesmo se você forçar, mate o aplicativo, pois o SO ainda não tem como saber explicitamente que não está sendo usado. Assim, quando um programa morre e ele não fecha o soquete corretamente, o sistema operacional o manterá alocado por um pouco de tempo, até que ele verifique se realmente está sendo usado e, se não estiver, desaloca-o para uso por outros programas.
Aqui está um link que explicará as funções shutdown e close para sockets em python. Então responda