Я создал простой скрипт, который перебирает список серверов, которые мне нужны как для ping, так и для nslookup. Проблема в том, что пинг может занять некоторое время, особенно пинговать больше сервера, чем секунд в день.
Я довольно новичок в программировании, и я понимаю, что многопроцессорная обработка или многопоточность могут помочь ускорить выполнение моей работы. ,
Я планирую взять мой список серверов и либо 1. Разбить его на списки четного размера с количеством списков, соответствующих потокам / процессам, либо 2. Если один из этих параметров поддерживает это, l oop через единственный список, передавая каждое новое имя сервера потоку или процессу после того, как он завершает свой предыдущий ping и nslookup. Это предпочтительнее, поскольку это гарантирует, что я трачу наименьшее количество времени, поскольку, как будто список 1 имеет 200 автономных серверов, а список 6 имеет 2000, ему нужно будет дождаться, пока процесс с использованием списка 6 завершится sh, даже если все остальные будут бесплатно в этот момент.
Какой из них лучше для этой задачи и почему?
Если возможно, как я могу убедиться, что каждый поток или процесс имеет практически одинаковое время выполнения
фрагмент кода, хотя и довольно простой прямо сейчас
import subprocess
import time
server_file = open(r"myfilepath", "r")
initial_time = time.time()
for i in range(1000):
print(server_file.readline()[0:-1]+ ' '+str(subprocess.run('ping '+server_file.readline()[0:-1]).returncode)) #This returns a string with the server name, and return code,
print(time.time()-initial_time)
Проблема возникает из-за того, что сбойный эхо-запрос занимает в среднем более 3 секунд каждый , Кроме того, я знаю, что не помещая оператор печати, это ускорит его, но я хотел контролировать его для небольшого случая. Я что-то пингую на 100 000 серверов, и это нужно будет делать регулярно, и список будет продолжать расти