Sono un principiante multiprocessing,Python, il multithreading troppo lento, multiprocesso
Ho qualche informazione su threading, ma ho bisogno di aumentare la velocità di questo calcolo, si spera con multiprocessing:
Esempio Descrizione : invia una stringa a un thread, altera stringa + test benchmark, restituisce il risultato per la stampa.
from threading import Thread class Alter(Thread): def __init__(self, word): Thread.__init__(self) self.word = word self.word2 = '' def run(self): # Alter string + test processing speed for i in range(80000): self.word2 = self.word2 + self.word # Send a string to be altered thread1 = Alter('foo') thread2 = Alter('bar') thread1.start() thread2.start() #wait for both to finish while thread1.is_alive() == True: pass while thread2.is_alive() == True: pass print(thread1.word2) print(thread2.word2)
Questo è attualmente dura circa 6 secondi e ho bisogno di andare più veloce.
Ho esaminato il multiprocessing e non riesco a trovare qualcosa di equivalente al codice precedente. Penso che quello che sto cercando è il che raggruppa ma gli esempi che ho trovato sono stati difficili da capire. Mi piacerebbe sfruttare tutti i core (8 core) multiprocessing.cpu_count()
ma ho davvero solo scarti di informazioni utili sul multiprocessing e non abbastanza da duplicare il codice precedente. Se qualcuno può indicarmi la giusta direzione o, meglio ancora, fornire un esempio che sarebbe molto apprezzato. Python 3 per favore
non occupato: attendere il completamento del thread. usa Thread.join()! – soulcheck
perché no? Ho fatto questo in gran parte della mia codifica e se puoi fornire una buona ragione, cambierò tutto :) – Rhys
beh è almeno buono come busy-waiting e probabilmente lo fa passivamente aspettare che il thread sia terminato senza mangiare il cpu (anche se non riesco a trovarlo nei documenti, scommetto che cpython non è occupato-aspetta nel suo thread.join()). – soulcheck