TensorFlow 的 Session 对象是支持多线程的,因此多个线程可以很方便地在同一个会话下对同一个队列并行地执行操作。Python 本身也提供了创建线程的threading.py,这个文件提供了Thread 类来创建线程,Thread 类的 start()函数可以用于启动线程。但是使用Python程序实现这样的并行运算没有那么简单,因为所有的线程需要能同步终止,同时需要正确察觉每个线程触发的异常。在会话终止的时候,操作队列的多个线程必须能被正确关闭。Tensorflow提供了两个类来实现多线程—train.Coordinator类和train,QueueRunner类。其中前者侧重于管理线程,用来协调同时停止多个工作线程或者在线程发生异常时向等待线程终止的程序报告异常;后者比较侧重于创建线程本身。

使用Coordinator类管理线程
Coordinator类的主要方法有should_stop()、request_stop()和join(),下面分别介绍这三个方法。should_stop():通过函数的返回值判断线程是否停止,如果线程停止了,则函数返回True。request_stop():请求该线程及其他线程停止。Join():等待被指定的线程终止。接下来,以启动 Thread 创建的线程为例来说明 Coordinator 类及其3个函数用法。在启动线程之前,需要先声明一个 Coordinator 类,并将这个类传入每一个创建的线程中。这些线程通常一直循环运行,并一直查询Coordinator 类中提供的 should_stop()函数,直到 should_stop()返回值为 True时才退出当前的线程 。每一个启动的线程也可以通知其他启动的线程退出,它只需要调用 request_stop()函数即可:同时这个线程的 should stop()函数将会返回 True ,结果是所有线程都停下来。下面是实际代码操作:

在上面的代码中使用Thread类创建了5个线程,无论 5 个线程中的哪一个发出,request_stop()操作请求,这 5 个线程的 should_stop()函数返回值都会输出True,并且相应的发出 request_stop()操作请求的线程也会停止。下面是输出的结果:

使用QueueRunner创建线程
QueueRunner类主要用于替代Python自身的Thread类创建多个线程。但是需要注意的地方是,QueueRunner类必须配合Coordinator类一起使用。正确的操作流程是先使用QueueRunner类创建多个线程来操作同一个队列,这些线程会通过train,add_queue_runner()函数加入一个集合中,之后再调用train.start_queue_runners()函数来启动所有线程并通过参数来管理这些线程的Coordinator类。train.add_queue_runner()函数中如果没有指定自己的集合,那么这些线程会被加入到计算图默认的一个集合中(这里就不再赘述,只要了解就可以)。需要注意的是,这个函数只支持启动指定集合中的 QueueRnner,所以需要先将线程放入集合中。 一般的做法是把train.add_queue_runner()函数指定的集合与 train. start_queue_runner()函数指定的集合保持一致。 以下是操作代码:

上面的代码中,我们首先定义了一个队列,以及一个入队操作,之后通过QueueRunner类创建了5个线程来执行这个入队操作,调用start_queue_runners()函数来运行线程,最后打印出结果。如下图所示:

总结:本节有关使用多线程处理输入的数据的内容就到这里了,如果有没有看明白的可以实际上手操作一下,这样会更有利于理解消化。

关注小鲸融创,一起深度学习金融科技!

多线程分批量处理list数据_使用多线程处理输入的数据相关推荐

  1. auto.js停止所有线程_使用多线程处理输入的数据

    TensorFlow 的 Session 对象是支持多线程的,因此多个线程可以很方便地在同一个会话下对同一个队列并行地执行操作.Python 本身也提供了创建线程的threading.py,这个文件提 ...

  2. 自拍会不会被大数据_不会搭建大数据平台,我被老板优化了...

    [51CTO.com原创稿件]随着业务的飞速发展,信息化作为业务的支撑,各个企业都建立了自己的信息化系统. 图片来自 Pexels 在业务增涨过程中,每个企业不知不觉积累积累了一些数据.无论数据是多是 ...

  3. python如何读dat数据_如何用Python进行数据质量分析

    概述 数据挖掘的第一步工作是数据准备,而数据准备的第一步就是数据质量分析了.本篇文章着重介绍如何使用Python进行数据质量分析的初步工作,属于比较基础的入门教程. 为什么要进行数据质量分析 根据百度 ...

  4. 分布式从mysql查数据_技术分享 | 从库数据的查找和参数 slave_rows_search_algorithms...

    作者:高鹏 文章末尾有他著作的<深入理解MySQL主从原理 32讲>,深入透彻理解MySQL主从,GTID相关技术知识. 本文节选自<深入理解MySQL主从原理>第24节 注意 ...

  5. 爬虫goodreads数据_使用Python从Goodreads数据中预测好书

    爬虫goodreads数据 Photo of old books by Ed Robertson on Unsplash 埃德·罗伯森 ( Ed Robertson)的旧书照片,内容为Unsplash ...

  6. 科学价值 社交关系 大数据_服务的价值:数据科学和用户体验研究美好生活

    科学价值 社交关系 大数据 A crucial part of building a product is understanding exactly how it provides your cus ...

  7. 微软大数据_我对Microsoft的数据科学采访

    微软大数据 Microsoft was one of the software companies that come to hire interns at my university for 202 ...

  8. python获取股票逐笔交易数据_利用python下载股票交易数据

    前段时间玩Python时无意看到了获取股票交易数据的tushare模块,由于自己对股票交易挺有兴趣,加上现在又在做数据挖掘工作,故想先将股票数据下载到数据库中,以便日后分析: # 导入需要用到的模块 ...

  9. mysql如何防止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

最新文章

  1. echart横轴文字显示省略号_echarts X轴显示不全 有省略
  2. iOS自动偏移64个像素
  3. 从头来之【iOS及历史版本特性介绍】
  4. angular 强制更新视图_angular,vue,react数据双向绑定原理分析
  5. 性能测试学习09_场景设计(一)
  6. 【转】adns解析库——域名解析实例(C++、linux)
  7. 隐私计算头条周刊(10.9-10.15)
  8. 学校计算机维护投标书,信息化系统硬件及应用系统安全运维服务投标书范本
  9. 西南科技大学OJ题 插入排序算法实现1016
  10. 数字图像处理与分析---指纹图像增强(Python)
  11. PPT学习整理(四)表格
  12. [Tips]Ubuntu20.04域名解析失败或网速很慢
  13. 南昌大学计算机学硕和专硕,南昌大学同等学力是专硕还是学硕
  14. 尤菲·如月 与你有约 ぐりぐりキュートユフィ汉化补丁
  15. 十进制转二进制,用java的两种基本方法,适合新手
  16. Flask框架快速搭建疫情打卡系统
  17. 美团“二选一”被立案调查,反垄断将成为常态化
  18. 问题解决:VScode在使用中文输入法时出现vim insert模式变成vim normal的奇怪现象( jj 映射成esc)
  19. 基于javaweb的平行志愿管理系统(java+springboot+mybatis+vue+mysql)
  20. 转:R语言在已有图形上面添加一条直线

热门文章

  1. C语言分数转化为小数
  2. ASP.NET Core开发经验
  3. Android IBinder
  4. bitdefender企业版实测感受 【IT168 专稿】
  5. 局部变量 全局变量 函数的嵌套
  6. jakarta.servlet.Filter is in unnamed module of loader java.net.URLClassLoader去除
  7. 笔记[M-SFANet]Encoder-Decoder Based Convolutional Neural Networks with Multi-Scale-Aware Modules...
  8. Mac下微信6.7.3版数据库破解过程
  9. 计算机内存不足若要还原,win7系统提示若要还原足够内存以使程序正确工作怎么办...
  10. vivo Y93的Usb调试模式在哪里,打开vivo Y93Usb调试模式的方法