如何使用python的multiprocess多进程

firebroo 发布于 2014/04/17 19:35
阅读 2K+
收藏 1

多进程这东西花费的是cpu的资源。所以我都不敢尝试开的太大(不像线程这种)一开大了电脑就挂了。。下面我贴个自己写的使用多进程探测Tcp端口是否开放的源码

#!/usr/bin/env python
# encoding: utf-8

from multiprocessing.dummy import Pool as ThreadPool
import socket
import time

def scan(port):
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.settimeout(0.1)
        ip='220.181.136.241'
        #print port
        try:
            s.connect((ip,port))
            #print port
        except:
            pass
        else:
            print 'port is %s',port
        s.close()
port=range(10000)
pool=ThreadPool(60)
start=time.time()
results=pool.map(scan,port)
#print results
pool.close()
pool.join()
print time.time()-start



我的电脑是4核心的,现在开了80个进程,扫完10000个端口大概13秒,尝试过开到100个的,看了下cpu到100%了。。速度也没提升多少了。大概12.9秒。想请教下前辈们一般开多少进程

加载中
0
mark35
mark35

有多少核心开多少进程

firebroo
firebroo
线程版本也写了,这边我主要在测试哪个速度快。gevent和stackless版本的写了,测试结果是多进程速度是最快的(13秒),其次是多线程(16秒),然后是微线程(120+秒)。
mark35
mark35
回复 @firebroo : 那就用线程呗
firebroo
firebroo
这样没法满足我的要求,我测试的是速度尽可能最快。4个进程要200多秒。
返回顶部
顶部