1

ich wikipedia Python-Paket bin mit Daten eines bestimmten ThemasPython - mit Multi-Processing/Multi-Threading für Web-Verschrottung

q=['NASA', 'NASA_insignia', 'NASA_spinoff_technologies', 'NASA_facilities', 'NASA_Pathfinder', 'List_of_NASA_missions', 'Langley_Research_Center', 'NASA-TLX', 'Budget_of_NASA', 'NASA_(disambiguation)'] 

Beispiel oben zu kratzen, ich habe für die NASA gesucht. Jetzt muss ich die Zusammenfassung für jedes Element in der Liste erhalten.

ny = [] 
for i in range(len(q)): 
    y = wikipedia.page(q[i]) 
    x = y.summary 
    ny.append(x) 

In diesen ganzen Prozess zu tun, jedes Element der Liste, dh durchqueren und Zusammenfassung jedes Element abrufen, es nimmt fast 40-60 Sekunden für den gesamten Prozess abgeschlossen werden (auch mit einer guten Netzwerkverbindung)

Ich weiß nicht viel über Multiprocessing/Multithreading. Wie kann ich die Ausführung um eine beträchtliche Zeit beschleunigen? Jede Hilfe wird geschätzt.

Antwort

0

Sie können einen Verarbeitungspool verwenden (siehe documentation). Hier

ist ein Beispiel, basierend auf Ihrem Code:

from multiprocessing import Pool 


q = ['NASA', 'NASA_insignia', 'NASA_spinoff_technologies', 'NASA_facilities', 'NASA_Pathfinder', 
    'List_of_NASA_missions', 'Langley_Research_Center', 'NASA-TLX', 'Budget_of_NASA', 'NASA_(disambiguation)'] 

def f(q_i): 
    y = wikipedia.page(q_i) 
    return y.summary 

with Pool(5) as p: 
    ny = p.map(f, q) 

Grundsätzlich f für jedes Element in q in separaten Prozessen angewandt wird. Sie können die Anzahl der Prozesse bei der Definition des Pools festlegen (5 in meinem Beispiel).

Verwandte Themen