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

# -*-coding:utf-8-*-
from time import ctime, sleep
import threading
import numpy as np
import collections loops = ['广州', '北京']
t_list = ['', '', '']
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()

需要注意的是:

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

最新文章

  1. Python(六)面向对象、异常处理、反射、单例模式
  2. Android UI:ListView -- SimpleAdapter
  3. VMWARE + CENTOS在windows下配置cocos2d-x android开发环境
  4. laravel事务小例子
  5. SQL Server Reporting Services – Insufficient Rights Error
  6. 训练趣题:黑与白 有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。(此处用javascript实现)
  7. MySQL对innodb某一个表进行移动
  8. Web自动化框架LazyUI使用手册(4)--控件抓取工具Elements Extractor详解(批量抓取)
  9. MongoDb 用 mapreduce 统计留存率
  10. (转)Windows 平台下解决httpd.exe: syntax error on line 39
  11. vs C++ scanf 不安全
  12. PAT (Advanced Level) Practise 1001 解题报告
  13. C# System.IO.StreamReader
  14. C-数据结构-typedef的用法
  15. linux select函数详解
  16. 洛谷1443 马的遍历【bfs】
  17. java poi导入Excel(个人代码)
  18. linux服务器的日志管理
  19. hdu1215-七夕节-(埃氏筛+唯一分解定理)
  20. C#时间戳转换[转发]

热门文章

  1. NodeJS2-4环境&调试----global变量
  2. Python的小整数池
  3. python基础知识第三篇(列表)
  4. [FPGA] Verilog 燃气灶控制器的设计与实现
  5. 仿Inshot分享页图片圆形展开缩放动画
  6. Sqlite—数据库备份与恢复
  7. spark-3.0 application 调度算法解析
  8. RBAC-权限管理设计
  9. Appium 使用笔记
  10. 分布式图数据库 Nebula Graph 中的集群快照实践