Я написал программу чата и запускаю GUI, используя Tkinter, и чтобы перейти и проверить, когда появились новые сообщения, я создаю новый поток, поэтому Tkinter продолжает делать свою работу без блокировки новый поток идет и захватывает то, что мне нужно, и обновляет окно Tkinter. Это, однако, становится огромным болотом процессора, и я предполагаю, что он должен как-то делать с тем, что Thread запускается и никогда не выпускается, когда функция выполнена.Threading in Python занимает слишком много CPU
Вот соответствующий код (он уродливый и не оптимизированный на данный момент, но он выполняет свою работу, и сам не использует слишком большую вычислительную мощность, так как, когда я запускаю его не заново, он не занимает много места CPU, но он запирает Tkinter)
def interim(self):
threading.Thread(target=self.readLog).start()
self.after(5000,self.interim)
def readLog(self):
print 'reading'
try:
length = len(str(self.readNumber))
f = open('chatlog'+str(myport),'r')
temp = f.readline().replace('\n','')
while (temp[:length] != str(self.readNumber)) or temp[0] == '<':
temp = f.readline().replace('\n','')
while temp:
if temp[0] != '<':
self.updateChat(temp[length:])
self.readNumber +=1
else:
self.updateChat(temp)
temp = f.readline().replace('\n','')
f.close()
except: pass
есть ли способ, чтобы лучше управлять многопоточность, так что я не потребляют> 100% CPU очень быстро?
Ваш отступ смешался, что делает невозможным точно знать, как работает ваш код. –
Извините, я просто понял это и изменил его. – KevinShaffer