L'aiuto del multithreading nel web scraping?

-2

A mia conoscenza il multi-threading è solo un'illusione dato che la CPU pianifica il tempo per ciascuno dei processi. Pertanto, quando si esegue la rottamazione in un determinato momento, verrà scartato solo un contenuto del sito Web e questo porterà anche a molte difficoltà poiché tutto il processo richiede la stessa risorsa, pertanto potrebbe esserci un problema con "l'allocazione delle risorse" che richiede mutex da implementare.

Il ruolo ultimo di mutex è impedire a un altro thread di accedere alla stessa risorsa. Quindi, se si implementa il mutex, anche la perfetta implementazione dei thread risulterebbe nel rottamare una informazione dal sito web in un determinato momento.

Quindi, in che modo il multithreading aiuta a scartare il sito web?

Considera che il bot non ha una GUI (per evitare che i commenti contribuiscano a gestire la GUI e il processo di assunzione del tempo).

TDLR? Il multithreading velocizzerà il processo di web-scraping?

    
posta VISWESWARAN NAGASIVAM 08.10.2016 - 17:09
fonte

2 risposte

2

In primo luogo, la maggior parte dei processori moderni è multicore e può gestire il vero multithreading a livello dell'hardware . Di solito, la velocità di ciascun core è leggermente più lenta di quella che si avrebbe se fosse utilizzato un solo core. Ma il throughput di elaborazione complessivo è molto più alto.

In secondo luogo, web scraping consistono nel richiedere risorse a un server web. Ciò richiede molta attività I / O (scambi di protocolli di rete, risorse di scrittura raccolte su disco, ecc ...). L'I / O è molto più lento dell'elaborazione, quindi la CPU impiegherebbe molto del suo tempo in attesa che l'I / O venga completato. Questo è il motivo per cui anche il threading basato su software che descrivi produrrà maggiore velocità effettiva : invece di aspettare improduttivamente, la CPU passa al thread successivo se l'I / O non è terminato.

Ultimo ma non meno importante, le risorse web sono molte. Se raccogli una pagina, potresti avere diverse immagini, materiale video, link ad altre pagine. Quindi, mentre questo media è servito - anche se sarebbe bloccato solo per l'accesso sequenziale -, ci sono abbastanza altri dati sbloccati da recuperare.

Infine, l'accesso in lettura alle risorse è raramente protetto da mutex. I mutex sono richiesti solo per la corsa dei dati, cioè lettura e scrittura simultanee. Inoltre, i siti Web vengono talvolta inviati o replicati su più server per un maggiore throughput e bilanciamento del carico.

Quindi, in conclusione: sì, il multithreading migliorerà definitivamente il web scraping.

    
risposta data 08.10.2016 - 17:39
fonte
0

In primo luogo, dovresti dare un'occhiata a quale collo di bottiglia della tua applicazione. È CPU? Probabilmente no - o stai lavorando molto duramente sui dati?

La mia ipotesi è che sia IO (rete) delimitata. Le chiamate sulla rete sono sloooow, il trasferimento è sloooow. Quindi la tua applicazione a thread singolo fa solo una cosa: aspettare che arrivino i dati. Hai un server a risposta lenta dall'altra parte della linea? Prendi una tazza di caffè.

Se gli lanci diversi thread, possono lavorare su altri siti web contemporaneamente. Cioè, fino al punto la tua connessione di rete è satura. Il tuo sistema potrebbe limitare il numero di connessioni simultanee, ma in genere > 1.

Per pulire con il tuo punto di apertura: la CPU pianifica diverse attività, ma potresti avere più di un core della CPU, incl. hyper hypering.

    
risposta data 08.10.2016 - 17:37
fonte

Leggi altre domande sui tag