Я использую QThread для выполнения интенсивных вычислений, чтобы избежать зависания графического интерфейса. В QThread я получаю доступ и изменяю глобальные списки много раз в течение срока службы потока, однако я не могу получить тот же результат, как если бы он был только в основном потоке.
Я бы предположил, что вам пришлось выполнить какую-то блокировку, но я новичок в QThread и не знаю, как ее реализовать.
#Main Thread
self.runGasAnalysisThread = GasAnalysisThread()
self.runGasAnalysisThread.start()
#QThread
class GasAnalysisThread(QtCore.QThread):
"""Performs gas analysis function"""
def __init__(self,parent = None):
super().__init__(parent)
def run(self):
try:
boolValue = True
while True:
#Change lists here
float(Data.TestList[0])+ 1 #Data is another module I am using to store variables
Опять же, перемещение кода в основной поток работает правильно, но как только я делаю это с QThread, я получаю другие результаты.
Как мне реализовать механизм блокировки, чтобы этого не происходило?