Простой пример многопоточности в 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')

 

Я уже 3 года торгую фьючерсами на Bybit и приглашаю тебя присоединиться и получить до $30 000 бонусами плюс скидки на комиссии:

Зарегистрироваться на Bybit

Чем больше депозит – тем больше бонусов. Также моим рефералам доступны торговые боты для трейдинга по самым выгодным тарифам.

Рекомендую статью:  Профилирование python 3 с cProfile и gprof2dot
Рейтинг
( Пока оценок нет )
Загрузка ...
Кводо.ру