У меня есть класс потока (TransmitThread), написанный на python, который принимает несколько параметров и затем начинает передачу на устройство (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;
Внедрение службы отдыха колб
@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
Код @ @ 1011 *https://github.com/sagar1805/usrp-server.git