Die Multithread-Verarbeitung wird ausgeführt, und der Unter-Thread wird zu einem Server und akzeptiert Eingaben vom Haupt-Thread. Geben Sie nach der Ausführung auf dem Terminal eine entsprechende Zeichenfolge ein und drücken Sie die Eingabetaste. Die Zeichenfolge wird per Socket-Kommunikation vom Hauptthread an den Neben-Thread gesendet. Wenn der Subthread die Zeichenfolge empfängt, wird sie von der print-Anweisung an das Terminal gedruckt.
Umgebung ・ Python2.7
thread_socket.py
import threading
import socket
import time
import datetime
# for receiving
class TestThread(threading.Thread):
def __init__(self):
super(TestThread, self).__init__()
self.host = ""
self.port = 12345
self.backlog = 10
self.bufsize = 1024
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.bind((self.host, self.port))
def run(self):
print " === sub thread === "
self.sock.listen(self.backlog)
conn, address = self.sock.accept()
while True:
mes = conn.recv(self.bufsize)
if mes == 'q':
print "sub thread is being terminaited"
break
print mes
self.sock.close()
if __name__ == '__main__':
th = TestThread()
th.setDaemon(True)
th.start()
time.sleep(1)
# time.sleep(100) #Dies ist zu lang (Befehl zum Warten von 100 Sekunden)
print " === main thread === "
ip = "localhost"
port = 12345
bufsize = 1024
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, port))
while True:
inp = raw_input("YOU>")
sock.send(inp)
time.sleep(1)
if inp == 'q':
th.join()
print "main thread is being terminated"
break
sock.close()
Recommended Posts