Мои первые шаги в освоении многопоточности.
Пять лет кодинга на однопоточном пхп5, прощайте, я буду по вам скучать!
Данная хреновина просто проверяет на доступность первые 500 портов вашего локалхоста.
Причем делает это в 1000 потоков.
Начинать смотреть надо со строки 30 – там запускаются потоки, после чего каждый поток дергает threadMain(), которая в свою очередь обрабатывает доступные задания с помощью process().
# multi-thread port checker import socket, queue, threading def threadMain(): global queue while True: try: task = queue.get_nowait() except: return 0 process(task) def process(port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(0.01) try: sock.connect(('localhost', port)) except: return 0 print('opened:', port) sock.close() # main queue = queue.Queue() for i in range(500): queue.put(i) for test in range(1000): new_thread = threading.Thread(target=threadMain) new_thread.start() threading.Thread.join(new_thread) print('done')