繁体   English   中英

Python 3.4多处理

[英]python 3.4 multiprocessing

这个问题是在寻求建议以及一些代码的帮助。

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

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

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

我是python的新手,所以请告诉我我是否也忽略了某些东西。

主要代码http://pastebin.com/ZS23XrdE

班级http://pastebin.com/kh65hYhG

由于大多数工作似乎都是基于IO的,因此您可以轻松地依赖线程。

看看cocurrent.futures中的Executor.map()函数: https : //docs.python.org/3/library/concurrent.futures.html

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

在您的特定情况下,您可以将两个工作程序的方法(check_dns_ip和os_ping)包装在一个方法中,并将其传递给ThreadPoolExecutor.map函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM