zoukankan      html  css  js  c++  java
  • 【Python】进程间共享实例

    #练习:进程间共享实例
    import time,os
    import random
    from multiprocessing import Pool,Value,Lock,Manager
    from multiprocessing.managers import BaseManager
    
    class MyManager(BaseManager):
        pass
    
    def Manager():
        m=MyManager()
        m.start()
        return m
    
    class Counter(object):
        def __init__(self,initval=0):
            self.val=Value("i",initval)
            self.lock=Lock()
        def increment(self):
            with self.lock:
                self.val.value+=1
        def value(self):
            with self.lock:
                return self.val.value
    
    MyManager.register("Counter",Counter)
    
    def long_time_task(name,counter):
        time.sleep(0.2)
        print "run task %s (%s)...
    " %(name,os.getpid())
        start=time.time()
        for i in range(50):
            time.sleep(0.01)
            #进程间共享实例
            counter.increment()
        end=time.time()
        print "task %s runs %0.2f seconds." %(name,(end-start))
    
    
    if __name__=="__main__":
        manager=Manager()
        counter=manager.Counter(0)
        print  "Parent process %s." % os.getpid()
        p=Pool(5)
        for i in range(5):
            p.apply_async(long_time_task,args=(str(i),counter))
        print "Waiting for all subprocesses done..."
        p.close()
        p.join()
        print "All subprocesses done."
        print counter.value()
  • 相关阅读:
    Server Application Unavailable 解决办法 (转)
    SQL SERVER:分割函数 split
    Win32汇编_基础
    Win32汇编_异常_筛选器
    创建进程常用函数
    内存常用函数
    桃花庵歌
    文天祥的诗
    Socket I/O模型全接触
    函数指针的神奇
  • 原文地址:https://www.cnblogs.com/jingsheng99/p/8824733.html
Copyright © 2011-2022 走看看