• 【Python】进程3


    #练习:
    import time
    from multiprocessing import Pool
    def run(fn):
      #fn: 函数参数是数据列表的一个元素
      time.sleep(1)
      return fn * fn
    
    if __name__ == "__main__":
      testFL = [1,2,3,4,5,6] 
      print 'Single process execution sequence:' #顺序执行(也就是串行执行,单进程)
      s = time.time()
      for fn in testFL:
        run(fn)
    
      e1 = time.time()
      print u"顺序执行时间:", int(e1 - s)
    
      print 'concurrent:' #创建多个进程,并行执行
      pool = Pool(5)  #创建拥有5个进程数量的进程池
      #testFL:要处理的数据列表,run:处理testFL列表中数据的函数
      rl =pool.map(run, testFL)
      pool.close()#关闭进程池,不再接受新的任务
      pool.join()#主进程阻塞等待子进程的退出
      e2 = time.time()
      print u"并行执行时间:", int(e2 - e1)
      print rl
    
    
    #练习:
    from multiprocessing import Process, Queue
    import os, time, random
    
    # 写数据进程执行的代码:
    def write(q):
      for value in ['A', 'B', 'C']:
        print 'Put %s to queue...' % value
        q.put(value)
        time.sleep(random.random())
    
    # 读数据进程执行的代码
    def read(q):
      time.sleep(1)
      while not q.empty():
        # if not q.empty():
        print 'Get %s from queue.' % q.get(True)
        time.sleep(1) # 目的是等待写队列完成
    
    if __name__=='__main__':
        # 父进程创建Queue,并传给各个子进程
        q = Queue()
        pw = Process(target = write, args = (q,))
        pr = Process(target = read, args = (q,))
        # 启动子进程pw,写入:
        pw.start()
        # 启动子进程pr,读取:
        pr.start()
        # 等待pw结束:
        pw.join()
        pr.join()
        print “Done!”
  • 相关阅读:
    一款非常推荐的用户界面插件----EasyUI
    使用chart和echarts制作图表
    JS模拟实现封装的三种方法
    JavaScript面向对象(OOP)
    移动HTML5前端框架—MUI
    一款优秀的前端JS框架—AngularJS
    less和scss
    JS中的正则表达式
    JS中的数组
    js匿名函数
  • 原文地址:https://www.cnblogs.com/jingsheng99/p/8719770.html
Copyright © 2020-2023  润新知