Простой пример многопоточности в python 3.1

Мои первые шаги в освоении многопоточности.

Пять лет кодинга на однопоточном пхп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')

 

Рейтинг
( Пока оценок нет )
Загрузка ...