【发布时间】:2018-03-27 19:34:56
【问题描述】:
我对 Python 有点陌生。我正在对一个网站进行索引并从中获取值,但是由于要索引的页面大约为 100k,因此需要很长时间。我想知道如何加快速度。我读到多线程可能是冲突的/不适用于此,多处理将是最好的开始方式。
这是我的代码示例:
def main():
for ID in range(1, 100000):
requests.get("example.com/?id=" + str(ID))
#do stuff/print html elements off of url.
如果我这样做:
if __name__ == '__main__':
for i in range(50):
p = multiprocessing.Process(target=main)
p.start()
它确实并行运行该函数,但我只希望每个进程抓取一个尚未被另一个进程抓取的 ID。如果我执行 p.join() 与没有多处理相比,它似乎根本没有提高速度,所以我不知道该怎么做。
【问题讨论】:
-
看起来您可能想要使用多处理
Pool和map那个函数。与第一个示例in the docs 相同的方法开始。 -
如果你只是在做请求,
requests-futures对于带有线程池的异步请求可能比尝试使用multiprocessing容易得多
标签: python python-3.x parallel-processing multiprocessing