zoukankan      html  css  js  c++  java
  • 【python】多线程

    https://docs.python.org/2/library/multiprocessing.html

    https://docs.python.org/2/library/threading.html

     http://www.coder4.com/archives/3352

    import multiprocessing
    import time
    from time import sleep
    import random
    
    def func(msg):
        for i in xrange(3):
            print msg
            time.sleep(1)
    class A:
        def __init__(self,i):
            sleep(int(random.random()*10))
            print i
            
    class B:
        def __init__(self):
            pass
        def b(self):
            print __name__
            if __name__ == "__main__":
                pool = multiprocessing.Pool(processes=4)
                for i in xrange(10):
                    msg = i
                    pool.apply_async(A, (msg, ))
                pool.close()
                pool.join()
                print "Sub-process(es) done."
                
    cb = B()
    cb.b()

    注意:if __name__ == "__main__": 必不可少

    2.7版本对类方法的多线程支持不好,变通实现方案

    import multiprocessing
    import time
    from time import sleep
    import random
    
    def func(msg):
        for i in xrange(3):
            print msg
            time.sleep(1)
    class A():
        def __init__(self):
            print 'A'
        def a(self,i):
            sleep(int(random.random()*10))
            print i
            return 10+i
            
    class C:
        def __init__(self,i):
            sleep(int(random.random()*10))
            print i
    def multi(i):
        k=A()
        return k.a(i)
        
    class B:
        def __init__(self):
            pass
        def b(self):
            print __name__
            #k = A()
            if __name__ == "__main__":
                pool = multiprocessing.Pool(processes=4)
                
                #k = C
                for i in xrange(10):
                    z = pool.apply_async(multi,(i,))
                    print z.get()
                pool.close()
                pool.join()
                print "Sub-process(es) done."
                
    cb = B()
    cb.b()

     http://pymotw.com/2/multiprocessing/

  • 相关阅读:
    Spring学习(二) AOP 面向切面编程之概念(一)
    Spring学习(一) IOC容器学习
    多线程和同步分别有几种实现方法?
    如何理解"=="和equals方法
    &和&&的区别
    关于静态方法和非静态方法之间的调用
    缘来了,来园了
    Java设计模式-代理模式
    JavaBitSet学习
    kafka安装
  • 原文地址:https://www.cnblogs.com/colipso/p/4504483.html
Copyright © 2011-2022 走看看