Parallel Python 并行开发多核心并行程序(例子2)

#-*- coding: UTF-8 -*-
#-------------------------------------------------------------------------------
# Name:        
# Purpose:     
#
# Author:      ankier
#
# Created:     05-02-2013
# Copyright:   (c) ankier 2013
# Licence:     <your licence>
#-------------------------------------------------------------------------------

import math,sys, md5, time

import pp

def md5Test(hash, start, end):
    for x in xrange(start, end):
        if md5.new(str(x)).hexdigest() == hash:
            return x

ppservers = ()
job_server = pp.Server(ppservers=ppservers)
print '当前工作核心工作进程数', job_server.get_ncpus(), "workers"
hash = md5.new("1829182").hexdigest()
print "hash =", hash

start_time = time.time()
rr = md5Test(hash, 1, 2000000)
print '单线程耗时',time.time() - start_time, 's', 'Result =', rr

start_time = time.time()
start = 1
end = 2000000


parts = 128

step = (end - start) / parts + 1
jobs = []

for index in xrange(parts):
    starti = start+index*step
    endi = min(start+(index+1)*step, end)
    jobs.append(job_server.submit(md5Test, (hash, starti, endi), (), ("md5",)))
    
for job in jobs:
    result = job()
    if result:
        break

# Print the results
if result:
    print "Reverse md5 for", hash, "is", result
else:
    print "Reverse md5 for", hash, "has not been found"

print "Time elapsed: ", time.time() - start_time, "s"
job_server.print_stats()

运行结果:

当前工作核心工作进程数 4 workers
hash = 48ae4d2d384dcc470e471f4169daa96a
单线程耗时 3.34699988365 s Result = 1829182
Reverse md5 for 48ae4d2d384dcc470e471f4169daa96a is 1829182
Time elapsed:  1.55399990082 s
Job execution statistics:
 job count | % of all jobs | job time sum | time per job | job server
       122 |        100.00 |       5.4470 |     0.044648 | local
Time elapsed since server creation 4.90199995041
3 active tasks, 4 cores

 

转载于:https://www.cnblogs.com/ankier/archive/2013/02/05/2893397.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值