Penso di averlo capito. La risposta sta nel fatto che il multiprocessing in Python non è condiviso, quindi l'intero spazio di memoria viene copiato, funzioni e tutto. Quindi per ogni processo, anche se il pid è diverso, gli spazi di memoria sono copie l'uno dell'altro e l'indirizzo della connessione all'interno dello spazio di memoria finisce per essere lo stesso. Lo stesso motivo è il motivo per cui dichiarare un pool di connessioni globale come ho fatto inizialmente era inutile, ogni processo ha finito con il proprio pool di connessioni con solo 1 connessione attiva alla volta.