免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3045 | 回复: 2
打印 上一主题 下一主题

python 多进程 输出排序的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-19 15:04 |只看该作者 |倒序浏览
本帖最后由 xxhacker 于 2012-12-19 15:05 编辑

各位,小弟刚学python不久,参照网上写了一个多进程PING的脚本,可是输出的时候就很乱,有些进程先执行完,有些后执行完,问一下有没有方法按照按IP排序一下再输出了?
  1. #! /usr/bin/python
  2. import sys
  3. import subprocess
  4. from multiprocessing import Process,Queue

  5. num_process = 10
  6. queue = Queue()

  7. def pinger (q):
  8.     while True:
  9.         if q.empty():
  10.             sys.exit()
  11.         ip = q.get()
  12.         ret = subprocess.call("ping -c 1 %s" %ip,shell=True,stdout=open("/dev/null","w"),stderr=subprocess.STDOUT)
  13.         if ret == 0:
  14.             print "%s: is [\033[32;1mONLine\033[0m]" %ip
  15.         else:
  16.             print "%s: is [\033[31;1mOFFLine\033[0m]" %ip

  17. for num in range(1,255):
  18.     ip = "192.168.1." + str(num)
  19.     queue.put(ip)

  20. for i in range(num_process):
  21.     worker = Process(target=pinger,args=(queue))
  22.     worker.start()

  23. worker.join()
复制代码

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2012-12-20 18:50 |只看该作者
多线程本来就会乱的. 这也是多线程的本意, 快的线程不用等慢的.

如果楼主想输出好看些, 可以把结果存下来, 在主进程里处理最后的输出.

论坛徽章:
0
3 [报告]
发表于 2012-12-22 10:30 |只看该作者
必须乱啊,每次处理的速度都是不一样的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP