@Fox Скрипт работает бесконечно, потому что вы поставили в конце каждого потока бесконечный цикл, если его убрать, то скрипт завершится самостоятельно когда закончатся прокси.
Вы правда рассчитываете, что скрипт завершится, когда последние 2 действия выглядят так?
Также обратите внимание, что пока поток использует ресурс, он не может быть использован другими потоками, более того они будут ждать того времени, пока другой поток закончит с ним действия.
Эта причина, по которой скрипт зависает не перед бесконечным циклом, а перед взятием ресурса.