Nota: I "forayed" nella terra di multiprocessing
2 giorni fa. Quindi la mia comprensione è molto semplice.Multiprocessing: più processi di cpu.count
Sto scrivendo e applicazione per caricamenti su bucket amazon s3
. Nel caso in cui la dimensione del file sia maggiore (100mb
), Ive ha implementato caricamenti paralleli utilizzando pool
dal modulo multiprocessing
. Sto usando una macchina con core i7
, ho avuto un cpu_count
di 8
. Avevo l'impressione che se io facessi pool = Pool(process = 6)
Io uso i core 6
e il file inizia a caricarsi in parti e gli upload per le prime 6 parti iniziano simultaneamente. Per vedere cosa succede quando lo process
è maggiore dello cpu_count
, ho inserito 20 (implicando che voglio usare 20 core). Con mia sorpresa invece di ottenere un blocco di errori, il programma ha iniziato a caricare 20 parti contemporaneamente (ho usato uno chunk size
più piccolo per assicurarmi che ci siano un sacco di parti). Non capisco questo comportamento. Ho solo core 8
, quindi come può il programma accettare un input di 20? Quando dico process=6
, utilizza effettivamente 6 thread ?? Quale può essere l'unica spiegazione del fatto che 20 è un input valido poiché ci possono essere migliaia di thread. Qualcuno può spiegarmelo per favore.
Edit:
ho 'preso in prestito' il codice da here. L'ho modificato solo leggermente, in cui chiedo all'utente un utilizzo di base per la sua scelta invece di impostare parallel_processes
su 4
Si mescolano discussioni, processi e core. Sono tutte "cose" molto diverse. se si imposta 'processes = 6', verranno utilizzati solo 6 ** processi **, che possono essere eseguiti su un core, oppure possono essere eseguiti tutti su un core, a seconda del sistema operativo e del carico del sistema. Per quanto riguarda la "domanda", si prega di fornire un codice. –