• 第七节 线程队列


    import tensorflow as tf
    
    # 模拟:异步子线程存入样本,主线程读取样本
    # 1.定义一个队列,容量10000
    q = tf.FIFOQueue(1000, tf.float32)
    
    # 2.创建一个变量,用assign_add实现自增
    var1 = tf.Variable(0.0)
    # 第二个参数的数据类型必须跟第一个参数一致,且表示每次自增的量
    data = tf.assign_add(var1, tf.constant(0.1))
    
    # 3.入队
    en_q = q.enqueue(data)
    
    # 4.定义队列管理器op,enqueue_ops指定子线程需要做的op操作,*2表示子线程的个数,TensorFlow中op是有依赖的,这边指定线程进行的en_q op它会自动去寻找data
    qr = tf.train.QueueRunner(q, enqueue_ops=[en_q]*2)
    
    # 5.初始化变量op
    init_op = tf.global_variables_initializer()
    
    with tf.Session() as sess:
        # 初始化变量
        sess.run(init_op)
    
        # 开启线程管理器
        coord = tf.train.Coordinator()
    
        # 开启子线程,start默认false,此时还需要调用thd.start()的方法去开启线程,改成true自动会开启线程
        thd = qr.create_threads(sess, coord=coord, start=True)
    
        # 主线程,不断读取训练数据
        for i in range(300):
            print(sess.run(q.dequeue()))
    
        # 回收线程,request_stop主线程完成强制停止子线程,还有一种是should_stop检查是否要求停止子线程
        coord.request_stop()
        coord.join(thd)
  • 相关阅读:
    jquery02
    jquery01
    oracle04_plsql
    oracle03
    oracle02
    oracle01
    selenium
    爬取京东商品信息并保存到MongoDB
    python pymongo操作之增删改查
    MongoDB 数据库表删除
  • 原文地址:https://www.cnblogs.com/kogmaw/p/12597885.html
Copyright © 2020-2023  润新知