Мои первые шаги в освоении многопоточности.
Пять лет кодинга на однопоточном пхп5, прощайте, я буду по вам скучать!
Данная хреновина просто проверяет на доступность первые 500 портов вашего локалхоста.
Причем делает это в 1000 потоков.
Начинать смотреть надо со строки 30 – там запускаются потоки, после чего каждый поток дергает threadMain(), которая в свою очередь обрабатывает доступные задания с помощью process().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# 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') |
Похожие записи: