#-*- coding: UTF-8 -*-#-------------------------------------------------------------------------------# Name: # Purpose: ## Author: ankier## Created: 05-02-2013# Copyright: (c) ankier 2013# Licence: <your licence>#-------------------------------------------------------------------------------import math,sys, md5, timeimport ppdef md5Test(hash, start, end): for x in xrange(start, end): if md5.new(str(x)).hexdigest() == hash: return xppservers = ()job_server = pp.Server(ppservers=ppservers)print '當前工作核心背景工作處理序數', job_server.get_ncpus(), "workers"hash = md5.new("1829182").hexdigest()print "hash =", hashstart_time = time.time()rr = md5Test(hash, 1, 2000000)print '單線程耗時',time.time() - start_time, 's', 'Result =', rrstart_time = time.time()start = 1end = 2000000parts = 128step = (end - start) / parts + 1jobs = []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 resultsif result: print "Reverse md5 for", hash, "is", resultelse: print "Reverse md5 for", hash, "has not been found"print "Time elapsed: ", time.time() - start_time, "s"job_server.print_stats()
運行結果:
當前工作核心背景工作處理序數 4 workershash = 48ae4d2d384dcc470e471f4169daa96a單線程耗時 3.34699988365 s Result = 1829182Reverse md5 for 48ae4d2d384dcc470e471f4169daa96a is 1829182Time elapsed: 1.55399990082 sJob execution statistics: job count | % of all jobs | job time sum | time per job | job server 122 | 100.00 | 5.4470 | 0.044648 | localTime elapsed since server creation 4.901999950413 active tasks, 4 cores