Come controllare i fili massimi in un grande loop in Python

voti
0

Sto cercando di usare il multithreading per scorrere un elenco di server, e per ogni server, inviare una richiesta di rete per ottenere lo stato del server

for s in all_servers:

    thread = threading.Thread(target=s.get_server_status)

    thread.start()

    threads.append(thread)

for thread in threads:

    thread.join()

tuttavia, ci potrebbero essere ben più di 2000 server in produzione, quindi sono preoccupato del fatto che le discussioni 2000 sono cattivi,

e se è, come posso controllare il numero massimo di thread che generano?

È pubblicato 11/02/2016 alle 06:31
dall'utente
In altre lingue...                            


1 risposte

voti
3

È possibile utilizzare multiprocessing.Pool

def get_server_status(s):
    return s.get_server_status()
pool = Pool(processes=4)
pool.map(get_server_status, all_servers)

In questo esempio solo 4 processi concorrenti verranno eseguiti.

Risposto il 11/02/2016 a 07:02
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more