zoukankan      html  css  js  c++  java
  • python获取多线程的返回值

    最近有个需求,用多线程比较合适,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装

    import threading
    
    
    class MyThread(threading.Thread):
    
        def __init__(self,func,args=()):
            super(MyThread,self).__init__()
            self.func = func
            self.args = args
    
        def run(self):
            self.result = self.func(*self.args)
    
        def get_result(self):
            try:
                return self.result  # 如果子线程不使用join方法,此处可能会报没有self.result的错误
            except Exception:
                return None
    
    
    def foo(a,b,c):
        time.sleep(1)
        return a*2,b*2,c*2
    
    st = time.time()
    li = []
    for i in xrange(4):
        t = MyThread(foo,args=(i,i+1,i+2))
        li.append(t)
        t.start()
    
    for t in li:
        t.join()  # 一定要join,不然主线程比子线程跑的快,会拿不到结果
        print t.get_result()
    
    et = time.time()
    print et - st

    执行结果

    (0, 2, 4)
    (2, 4, 6)
    (4, 6, 8)
    (6, 8, 10)
    1.00099992752

  • 相关阅读:
    团队项目选题参考
    结对编程2——单元测试
    个人作业2——英语学习APP案例分析
    js创建数组
    oracle常用函数
    Oracle聚合函数
    Myeclipse10破解版安装包
    Myeclipse按包装SVN
    Eclipse安装SVN
    Git使用教程
  • 原文地址:https://www.cnblogs.com/hujq1029/p/7219163.html
Copyright © 2011-2022 走看看