Python多处理如何更快地编写脚本?

时间:2017-04-17 14:29:20

标签: multithreading python-multiprocessing

Python 3.6

我正在编写一个脚本来自动检查以确保网站上的所有链接都能正常工作。

我有一个版本,但它运行缓慢,因为python解释器一次只运行一个请求。我导入了selenium以在列表中拉下链接。我从一个41000链接列表开始。我摆脱了重复现在我在我的列表中的7300链接。我正在使用请求模块来检查响应代码。我知道多处理是答案,只是看到一堆不同的方法。哪个最符合我的需求?我唯一需要记住的是,我不能同时运行到多个线程,因此我不会在我们的服务器天空中发送我们的网络服务器线程请求。提前致谢。这是我第一次发帖到论坛,请原谅我,如果我不遵守协议。先谢谢

特拉维斯

这是检查与我试图加速的python请求模块的链接的函数:



def check_links(y):
    for ii in y:
        try:
            r = requests.get(ii.get_attribute('href'))
            rc = r.status_code
            print(ii.get_attribute('href'), ' ', rc)
        except Exception as e:
            logf.write(str(e))
        finally:
            pass




1 个答案:

答案 0 :(得分:0)

如果您只需要对列表中的所有项目应用相同的功能,则只需使用进程池,并映射输入。这是一个简单的例子:

from multiprocessing import pool

def square(x):
    return {x: x**2}

p = pool.Pool()
results = p.imap_unordered(square, range(10))

for r in results:
    print(r)

在我使用imap_unordered的示例中,还要查看mapimap。您应该选择最符合您需求的那个。