ping ip多进程处理小程序
最近,环境维护需要经常需要判断某些服务器上的IP是否可达,由于服务器数量较多,逐一手工ping检查太过繁琐。写个小程序使用。
实现和说明
1、使用配置文件ip.txt实现可配置指定ip列表。
2、利用multiprocessing多进程模块实现并发处理。同时利用Pool类实现进程数量控制。
3、通过ping_result.append()先收集ping执行结果,再打印的方式避免出现输出时错行的现象。
具体代码实现如下:
import multiprocessing
import os, sys ip_file = "ip.txt"
cur_dir = os.getcwd() def ping_ip(ip):
ret = os.system('ping -n 2 -w 3 %s > nul' % (ip,))
return (ret, ip) if __name__== '__main__':
try:
fp = open(ip_file, 'r')
except:
print "%s have not %s file,please check." % (cur_dir, ip_file)
sys.exit(1)
else:
ip_lst = fp.readlines()
fp.close()
p = multiprocessing.Pool(multiprocessing.cpu_count()*2)
ping_result = []
for ip in ip_lst:
ping_result.append(p.apply_async(ping_ip, args=(ip.strip(),)))
p.close()
p.join() for each in ping_result:
ret, ip = each.get()
if ret == 0:
print "%s success" % (ip,)
else:
print "%s fail" % (ip,)
关键代码描述:
1、multiprocessing.Pool()
函数原型:Pool(processes=None, initializer=None, initargs=(), maxtasksperchild=None)。返回进程池对象(Returns a process pool object)
Pool 可以提供指定数量的进程供用户使用,默认是 CPU 核数。当有新的请求提交到 Poll 的时候,如果池子没有满,会创建一个进程来执行,否则就会让该请求等待。特别说明:
(1)Pool 对象调用 join 方法会等待所有的子进程执行完毕。
(2)调用 join 方法之前,必须调用 close 方法
(3)调用 close 之后就不能继续添加新的 Process 了。
2、multiprocessing.cpu_count()。Returns the number of CPUs in the system
3、apply_async()方法用来同步执行进程,允许多个进程同时进入池子。
4、multiprocessing模块更详细的使用方法可以查看官方说明文档:multiprocessing
ping ip多进程处理小程序的更多相关文章
- python学习之最简单的获取本机ip信息的小程序
文章是从我的个人博客粘贴过来的,大家可以直接访问我的个人博客哦 http://www.iwangzheng.com 获取本机ip信息的命令ifconfig总是在用,这次拿到pyhton代码里,感觉py ...
- 小程序如何传数组数据到vs后台中
首先小程序要跟vs运行的状态打通,首先要修改配置,也就是说调试的时候,小程序一使用Post请求后台的方法时就能让vs进入调试状态. 1.修改vs中的配置,注意这个.vs文件,如图: 找到这个文件 然后 ...
- 微信小程序开发部署
一.开发准备 1,想要开发微信小程序,必须要有一个AppId,如果没有可以去注册一个. https://mp.weixin.qq.com/进入注册页面,点击上方注册. 2,点击选择“小程序”出 ...
- 微信小程序开发-IP地址查询-例子
微信小程序开发 小程序搜索框 IP地址查询 搜索查询 样例 微信小程序 开发 参考 https://mp.weixin.qq.com/debug/wxadoc/dev/component/ ...
- 【Python】【辅助程序】练手小程序:记录外网动态IP地址
练手小程序 程序作用:对IP实时记录: 1.定时获取外网IP,存储在本地文件中: 编写思路: 1)收集获取外网的API接口 http://bbs.125.la/thread-1383897 ...
- JavaScript和微信小程序获取IP地址的方法
最近公司新加了一个需求,根据用户登录的IP地址判断是否重复登录,重复登录就进行逼退,那么怎么获取到浏览器的IP地址呢?最后发现搜狐提供了一个JS接口,可以通过它获取到客户端的IP. 接口地址如下: h ...
- 一个关于小程序与单片机的通信实例(TCP/IP)
前言 这是一个18年初的创业项目的核心功能要求,我们当时打算做一个共享类的项目,项目的主题是共享图书,线下的形式租借图书,我们当时是考虑做一个借书柜的形式,然后线下生产投放借书柜,这些借书柜本身能存放 ...
- 开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
在我们开发开发H5程序或者小程序的时候,有时候需要基于内置浏览器或者微信开发者工具进行测试,这个时候可以采用默认的localhost进行访问后端接口,一般来说没什么问题,如果我们需要通过USB基座方式 ...
- 后端程序员实现一个IP归属地的小程序
在日常开发中,后端主要提供数据以及处理业务逻辑,前端主要提供页面布局以及数据展示.后端程序员对于页面布局接触比较少,但是小程序有完善的文档说明.页面布局也相对简单,实现起来相对简单一些.而且小程序相对 ...
随机推荐
- vue todolist待办事项完整
<template> <div id="app"> <input type="text" v-model='todo' @keyd ...
- Vue Admin 后台管理
https://segmentfault.com/a/1190000009188689
- webpack入门详解
webpack入门详解(基于webpack 3.5.4 2017-8-22) webpack常用命令: webpack --display-error-details //执行打包 webpa ...
- U3D学习004——核心类和代码运行
1.U3D核心类 2.变量 只有public变量才可以显示在inspector面板中,[serializeField]可以使private和protected变量显示在inspector面板中. 3. ...
- redis参数改进建议
1.修改stop-writes-on-bgsave-error为no当前配置为yes,分别修改redis.conf和当前实例#redis.confstop-writes-on-bgsave-error ...
- es6(13)--Promise
//Promise { //原始方法 let ajax=function(callback){ console.log('执行') setTimeout(function(){ callback&am ...
- firewalld的使用(CentOS7的端口打开关闭)
1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status f ...
- QNetworkAccessManager post()和get()方法
GET方式提交的数据最多只能有1024字节,而POST则没有此限制. 大文件传输用post(),小文件用get(), 第一次接触Qt的Http项目,今天看了一下Post和Get的基本使用方法,就开始尝 ...
- 阿里云实现putty私钥登录全过程
阿里云实现putty私钥登录全过程 1 putty生成公钥和私钥 1)putty生成公钥和私钥 记得在空白区域 滑动 2 公钥上传到阿里云 1)公钥上传 私钥存到本地 3 公钥绑定要登录的实例 4 ...
- py库: jieba (中文词频统计) 、collections (字频统计)、WordCloud (词云)
先来个最简单的: # 查找列表中出现次数最多的值 ls = [1, 2, 3, 4, 5, 6, 1, 2, 1, 2, 1, 1] ls = ["呵呵", "呵呵&qu ...