python进程池编程实例

原创 2015年07月07日 15:00:40
本实例基于Python的进程池类multiprocessing.Pool,
并对每个进程的结果进行检测;


#!/usr/bin/env python
#coding=utf-8
"""
File: test-pool.py
Author: Hank
Last modified: 2015/6/15 11:40
Desc:
"""


from multiprocessing import Process, Pool
import re
import string
import subprocess
from time import sleep
import types


def detect(rtmp):


    rtmpdump = ['./rtmpdump-detect', '--live']
    rtmpdump_set   = ['-r', rtmp, '--timeout', '5', '--stop', '3', '-o','/dev/null']
    rtmpdump_cmd = rtmpdump + rtmpdump_set
    str_rtmpdump_cmd =(' ').join(rtmpdump_cmd)
    print "RTMPDUMP_CDM =%s" %(str_rtmpdump_cmd)


    rtmpdump_proc = subprocess.Popen(rtmpdump_cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    (stdoutdata, stderrdata) = rtmpdump_proc.communicate()
    print "Process output"
    print ("STDOUT: " + stdoutdata)


    code = '100'


    if rtmpdump_proc.returncode != 0:
        print (str_rtmpdump_cmd + " ERROR!")


    pattern = re.compile(r'ret=(\d)')
    for r in str(stdoutdata).split("\n"):
        try:
            code = pattern.search(r).group(1)
            print "CODE : %s"%(code)
        except Exception:
            code = code


    return "done: " + code


def main():
    pool = Pool(processes=2)
    result = []


    rtmp_list = [ 'rtmp://192.168.1.9/live/abcdefg',
                  'rtmp://192.168.1.9/live/abcdefgvv',
                  'rtmp://192.168.1.9/live/abcdefgvv',
                  'rtmp://192.168.1.9/live/abcdefgtv',
                  'rtmp://192.168.1.99/live/abcdefgv',
                  'rtmp://192.168.1.99/live/abcdefgv']


    for rtmp in rtmp_list:
        print "RTMP: %s" %(rtmp)
        result.append(pool.apply_async(detect, (rtmp,)))


    pool.close()
    pool.join()


    for res in result:
        print res.get()


if __name__ == "__main__":
    main()

Python 多进程池的学习

最近想用python写个爬虫,根据学校图书馆的学号密码。由于学校图书馆初始密码为6位数字,而且不需要验证码,所以破解起来很简单。思路就是生成6为数字暴力密码本,依次向网页POST“学号-密码”的表单即...
  • u011964923
  • u011964923
  • 2016年12月17日 17:00
  • 882

Python多进程之进程池

由于Python中线程封锁机制,导致Python中的多线程并不是正真意义上的多线程。当我们有并行处理需求的时候,可以采用多进程迂回地解决。如果要在主进程中启动大量的子进程,可以用进程池的方式批量创建子...
  • T_27080901
  • T_27080901
  • 2017年04月05日 11:28
  • 2398

multiprocessing在python中的高级应用-进程池

下面的类可以创建进程池,可以吧各种数据处理任务都提交给进程池。进程池提供的功能有点类似于列表解析和功能性编程操作(如映射-规约)提供的功能。Pool( [ numprocess [, initiali...
  • Winterto1990
  • Winterto1990
  • 2015年08月30日 14:56
  • 2162

python中进程池例子

在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。当被操作对象数目不大时,可以直接利用multiprocessing中的Process...
  • u011205177
  • u011205177
  • 2014年03月25日 11:05
  • 1116

进程池出现卡死现象

问题描述:客户端发起请求后,服务器端一直处于阻塞状态。 通过ps命令获取到各个进程的进程号 attach 父进程id 查看bt堆栈 attach 子进程id ...
  • sinat_26331725
  • sinat_26331725
  • 2018年01月26日 15:21
  • 23

Python进程池的简单使用

Python进程池的简单使用
  • boneix
  • boneix
  • 2017年09月04日 17:19
  • 172

Python3之进程池与回调函数

进程池代码演示方式一from multiprocessing import Pool def deal_task(n): n -= 1 return n if __name__ == ...
  • qq_33733970
  • qq_33733970
  • 2017年08月28日 16:14
  • 576

python进程池专题总结 源代码

转自codexiu python进程池专题总结         本篇内容为大家提供的是python进程池专题总结等,主要介绍模块为apply_async,map_async,subproce...
  • Haskei
  • Haskei
  • 2017年01月31日 22:02
  • 399

Python多进程操作-进程池(Pool)

在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多 台主机,并行操作可以节约大量的时间。如果操作的对象数目不大时,还可以直 接使用Process类动态的生成多个进程,十几个...
  • lechunluo3
  • lechunluo3
  • 2018年01月19日 16:53
  • 25

解决python进程池中无法使用multiprocessing.Queue

使用python进程库中的进程池Pool可以简便的对进程任务进行管理, 同时python的multiprocessing为进程间通讯提供了不少工具, 其中之一便是消息队列Queue. 在测试时,...
  • tpoy0099
  • tpoy0099
  • 2015年12月16日 10:31
  • 1007
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python进程池编程实例
举报原因:
原因补充:

(最多只允许输入30个字)