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

    以下是多线程获取返回值的一种实现方式

    # -*-coding:utf-8-*-
    from time import ctime, sleep
    import threading
    import numpy as np
    import collections
     
    loops = ['广州', '北京']
    t_list = ['01', '02', '03']
    cldas_sum = collections.deque()
     
     
    class MyThread(threading.Thread):
        def __init__(self, func, args, name=''):
            threading.Thread.__init__(self)
            self.name = name
            self.func = func
            self.args = args
            self.result = self.func(*self.args)
     
        def get_result(self):
            try:
                return self.result
            except Exception:
                return None
     
     
    def loop(nloop):
        for j in t_list:
            cldas_values = []
            for k in range(4):
                cldas_value = nloop + str(k)
                cldas_values.append(cldas_value)
            cldas_values.append(j)
            cldas_values.append(nloop)
            cldas_sum.append(cldas_values)
            print(id(cldas_values))
        #print(cldas_sum)
        return cldas_sum
     
     
    def main():
        print('start at', ctime())
        threads = []
        nloops = range(len(loops))
        for i in nloops:
            t = MyThread(loop, (loops[i],), loop.__name__)
            threads.append(t)
        for i in nloops:   # start threads 此处并不会执行线程,而是将任务分发到每个线程,同步线程。等同步完成后再开始执行start方法
            threads[i].start()
        for i in nloops:   # jion()方法等待线程完成
            threads[i].join()
        print(threads[1].get_result())
        print('DONE AT:', ctime())
     
     
    if __name__ == '__main__':
        main()

    需要注意的是:

    如果多个线程共用一个公共数据,那么我们需要做的就是将这个公共数据设置成队列格式,要不然多个线程共同访问这个数据可能会出错,需要加锁。设置成队列比加锁再放锁效率高多了

  • 相关阅读:
    xshell使用密钥登陆服务器
    SQLyog使用隧道登陆数据库
    puttygen.exe生成ppk格式密钥
    xshell生成密钥对
    性能测试基础---jmeter函数二次开发
    Python:基础知识(二)
    异常点检测
    Python:numpy.newaxis
    三张图读懂机器学习:基本概念、五大流派与九种常见算法
    机器学习:样本集、验证集(开发集)、测试集
  • 原文地址:https://www.cnblogs.com/zongfa/p/11333552.html
Copyright © 2011-2022 走看看