我正在使用维基百科python包来抓取特定主题的数据
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)']
上面的例子,我搜索过NASA。现在我需要获取列表中每个元素的摘要。
ny = []
for i in range(len(q)):
y = wikipedia.page(q[i])
x = y.summary
ny.append(x)
在完成整个过程,即遍历列表的每个元素并检索每个元素的摘要时,整个过程需要大约40-60秒才能完成(即使网络连接良好)
我对多处理/多线程知之甚少。如何在相当长的时间内加快执行速度?任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用处理池(请参阅documentation)。
以下是基于您的代码的示例:
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)
基本上f
适用于q
中不同进程中的每个元素。
您可以在定义池时确定进程数(在我的示例中为5)。