Хотите написать сокет-клиент с многопроцессорной обработкой, есть идеи, что не так в следующем коде?Мне не нужно писать сервер на python, но перед прослушиванием мне нужно создать свободный порт на локальном хосте.Порт отправляется на сервер в другом коде.Также я ожидаю, что следующий код будет распечатывать сообщение каждые 1 сек для целей отладки, но оно будет распечатано только один раз.И процесс не включился даже после того, как я установил событие остановки.
def getsocket():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 0))
return s
except Exception as err:
return None
def PortListener(s, stopper):
print("Listensing to port for message")
while not stopper.is_set():
time.sleep(1)
print("check message..")
message = s.recv(4096)
if message:
print("received message: {}".format(message))
def logprogress():
s = getsocket()
port = s.getsockname()[1]
print("port number: {}".format(str(port)))
s.connect(("localhost", port))
stopper = mp.Event()
logger = mp.Process(target=PortListener, args=(s, stopper))
logger.start()
return logger, stopper
def stopprogress(logger, stopper):
if logger and stopper:
print("Stopping listening to worker's progress.")
stopper.set()
logger.join()
print("Exit process")
else:
raise TypeError
if __name__ == '__main__':
logger, stopper = logprogress()
time.sleep(10)
stopprogress(logger, stopper)