加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python 3.4多处理

发布时间:2020-12-20 13:46:23 所属栏目:Python 来源:网络整理
导读:这个问题是寻求建议以及一些代码的帮助. 我目前正在使用3.4学习Python 我已经构建了一个基本的网络检查工具,我从文本文件中导入项目,对于每个我想要python检查dns(使用pydns),ping ip(使用子进程调用OS本机ping). 目前我正在检查5000到9000千个IP地址,并且需
这个问题是寻求建议以及一些代码的帮助.

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

目前我正在检查5000到9000千个IP地址,并且需要花费数小时,大约4个返回所有结果.

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

我是python的新手所以请告诉我,如果我忽略了我应该做的事情.

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


http://pastebin.com/kh65hYhG

解决方法

由于大部分工作都是基于IO的,因此您可以轻松地依赖Threads.

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读