首页 > 解决方案 > 在while循环执行期间线程停止

问题描述

我有一个用python编写的线程类(TransmitThread),它需要很少的参数,然后开始传输到设备(NI USRP)。我有一个基于休息瓶的网络服务,它根据用户的休息请求创建一个新的 TransmitThread 对象并调用 start()。理想情况下,它应该开始传输并等待 self.thdRunning 的标志,我可以将其设为假。我发现我的实现有 2 个问题 1。我没有看到来自 Thread 类的打印 2。我将线程存储在字典中作为参考。当我收到后续的休息请求时,旧线程处于停止状态。

注意:我对 Python 不太熟悉,我正在努力学习,所以任何额外的输入也会有所帮助

有关如何保持线程运行和打印日志的任何输入都会有所帮助。

class TransmitThread(threading.Thread,grc_wxgui.top_block_gui):
    // variables are initalised here
    thdRunning = True
    def __int__(self):
        pass

    def run(self):
        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 32000
        ....do some more thing....    
        print("Transmission started! Will wait to be killed")
        while self.thdRunning:
            time.sleep(2)
        print("Transmission thread stopped!")

    def endThreadExecution(self):
        self.thdRunning = False;

Flask 休息服务实现

@app.route('/txdata/<clienID>/<usrpIp>/<frequency>/<path:fname>',methods=['GET'])
def transmit(clienID,usrpIp,frequency,fname):
    global dict

    if(not isUsrptransmiting)|shallStartTxn:
        if fname.endswith('.iq12'):
            decIM = 12
        else:
            decIM = 48
        usrpIp = "addr="+str(usrpIp)
        print(usrpIp)
        fname = "/"+fname
        transmitThread = threading.Thread(target=TransmitThread,args=(fname, str(usrpIp), decIM, frequency))
        transmitThread.daemon = True  # Daemonize thread
        print("Service is Transmitting " + str(clienID) + "this is your username " + str(usrpIp) + " freq " + str(frequency) + " file " + str(fname) +" decIM "+str(decIM))
        transmitThread.start()
        dict[str(usrpIp)] = transmitThread
        print('Service is Transmitting '+ clienID+',this is your username '+usrpIp+ ' freq '+frequency+ ' file '+ fname)
        response = {'clientId':clientID}
    else:
         response = {'clientId':"None"}
        return jsonify(response),200

代码是@https ://github.com/sagar1805/usrp-server.git

标签: pythonmultithreadingpython-2.7flask

解决方案


推荐阅读