#!/bin/python3 import socket import select import time import threading import logging s = socket.socket() s.setblocking(False) s.bind(('127.0.0.1', 9000)) s.listen(1) def acceptor(soc, name): soc.setblocking(False) print('accepting {}'.format(name)) print("soc: {}, timeout: {}".format(soc, soc.gettimeout())) while True: time.sleep(1) try: data = soc.recv(3) except: logging.exception("{} exception".format(name)) else: print("{} data: {}".format(name, data)) return acceptors_c = 0 while True: if len(select.select([s], [], [], 0.5)[0]) == 0: print("select timeout") time.sleep(0.5) else: th = threading.Thread( target=acceptor, args=(s.accept()[0], 'acc {}'.format(acceptors_c)) ) th.start() acceptors_c += 1