Python3.4多处理

Python3.4多处理,python,python-3.x,python-multithreading,python-multiprocessing,Python,Python 3.x,Python Multithreading,Python Multiprocessing,这个问题是在寻求一些代码方面的建议和帮助 我目前正在学习Python 3.4 我已经构建了一个基本的网络检查工具,我从一个文本文件导入项目,我希望python为每个项目检查dns(使用pydns),ping ip(使用子进程调用OS本机ping) 目前,我正在检查5000到9000 000个IP地址,需要几个小时,大约4个小时才能返回所有结果 我想知道我是否可以使用多处理或线程来加快速度,但仍然可以将输出返回到列表,以便在脚本的最后将行批量写入csv文件 我是python新手,所以请告诉我是否忽

这个问题是在寻求一些代码方面的建议和帮助

我目前正在学习Python 3.4 我已经构建了一个基本的网络检查工具,我从一个文本文件导入项目,我希望python为每个项目检查dns(使用pydns),ping ip(使用子进程调用OS本机ping)

目前,我正在检查5000到9000 000个IP地址,需要几个小时,大约4个小时才能返回所有结果

我想知道我是否可以使用多处理或线程来加快速度,但仍然可以将输出返回到列表,以便在脚本的最后将行批量写入csv文件

我是python新手,所以请告诉我是否忽略了一些我也应该注意的事情

主代码

阶级

由于大部分工作似乎都是基于IO的,因此您可以很容易地依赖线程

看看cocurrent.futures中的Executor.map()函数:

您可以传递IP列表和要针对每个元素运行的函数,返回的值实际上是给定函数的结果列表

在您的特定情况下,您可以将两个辅助方法(检查dns ip和操作系统ping)打包为一个,并将其传递给ThreadPoolExecutor.map函数。

您可以。这是一个例子。给你

您不需要多个线程/进程来检查5000-9000个IP(DNS、ICMP)。
您可以。

多处理可能是一个不错的选择,使用可连接的队列来获取数据。但这可能并不比子流程好多少,这取决于您运行它的方式。你在等每一篇文章都完成吗?我已经用我正在使用的代码更新了主帖,这需要很长时间。