zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    linux系统中对SSD硬盘优化的方法
    正则
    自己写的博客上线啦
    create-react-app部署到GitHub Pages时报错:Failed to get remote。origin.url
    使用react-redux开发的简单步骤
    使用redux开发的简单步骤
    使用combineReducers注意事项
    在前端页面展示Markdown文件
    React Router V4.0学习笔记
    为什么React事件处理函数必须使用Function.bind()绑定this?
  • 原文地址:https://www.cnblogs.com/ankier/p/2893397.html
Copyright © 2011-2022 走看看