Как открыть несколько соединений Tor для использования в Python скриптах (на примере Ubuntu)

В предыдущем посте я показал, как можно использовать соединение Tor из Python-скрипта (а также как устанавливать и запускать Tor-сервис в Ubuntu). Преимущество того подхода (по сравнению с использованию Privoxy в качестве прослойки мeжду SOCKS и HTTP) заключается в том, что он легко масштабируется: можно открыть любое (на сколько хватит аппаратных ресурсов) количество соединений и каждому Python процессу дать по одному прокси-порту (c Privoxy это тоже можно сделать, но несколько сложнее).
Здесь же я проведу в качестве примера Bash-скрипт, который открывает заданное количество Tor-соединений и для каждого соединения запускает два Python-скрипта.

Python3: как выполнять HTTP запросы через Tor (на примере Ubuntu)

В этом посте я опишу как пользоваться Tor в своих Python-скриптах. Зачем это нужно? Например, чтобы изменить свой видимый IP адрес для сервиса, к которому вы обращаетесь.
Нам понадобится установленный Tor и Python (я использую третий, но второй, по идее, тоже должен работать). Многие советуют использовать дополнительный сервис Privoxy между Tor, который работает как SOCKS-прокси и библиотеками Python, которые хотят получить HTTP-прокси, но я не очень понял, зачем, если в Python можно пользоваться SOCKS-прокси напрямую.
У меня установлена Ubuntu, поэтому и весь процесс я описываю для этой ОС. В других, я так понимаю, все должно быть примерно так же (Python-код должен работать в любом случае, разница может быть только с установкой и запуском Tor).