Sto sperimentando con un server tcp python (ho appena scoperto la suggestione che è python). Ad ogni modo, il server funziona perfettamente e stampa i dati come mi aspetterei, ma quando guardo l'utilizzo della CPU nel task manager di Windows mostra che python.exe sta consumando il 97% -99% della CPU.Il programma server Python ha un elevato utilizzo della CPU
Solo per vedere cosa sarebbe successo, l'ho eseguito di nuovo su un altro computer e utilizzato solo il 50% circa della CPU.
Ecco quello che mi chiedo:
Perché l'utilizzo della CPU così in alto?
Perché dovrei vedere una differenza in esecuzione su due macchine diverse (una è Windows 7 l'altra è server 2008, potrebbe essere così)?
Sto creando un nuovo thread per ogni connessione e l'esecuzione di un ciclo while è sempre true, ma ho una "interruzione" quando non c'è più una connessione. Questo thread viene distrutto correttamente?
Grazie in anticipo per qualsiasi aiuto!
import socket
import threading
import logging
import time
TCP_IP = "127.0.0.1"
TCP_PORT = 10000
BUFFER_SIZE = 1024
SOCKET_TIMEOUT = 2
def handler(conn):
while 1:
try:
data = conn.recv(BUFFER_SIZE)
if data:
dataS = data.decode(encoding = 'UTF-8')
print ("received data: ")
print (dataS)
logging.getLogger("TestLogger").critical(dataS)
except socket.error as e:
print("connection closed")
conn.close()
break
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.setblocking(0)
s.listen(5)
except Exception as e:
print(e)
while 1:
try:
conn, addr = s.accept()
except Exception as e:
continue
print ('Connection address:')
print (addr)
conn.settimeout(SOCKET_TIMEOUT)
connThread = threading.Thread(target = handler, args = (conn,))
connThread.start()
Si dovrebbe postare questo sulla revisione del codice, in quanto sembra essere il codice funzionale. –
Non ero a conoscenza della revisione del codice. Dovrei rimuovere questo post, allora? – jteezy14
Non sono sicuro al 100%, potrei voler chiedere alla meta chat –