Здесь мне очень помогли параллелизм, и он действительно заработал, или я подумал:
Как исправить многопоточность / многопроцессорность с помощью словарей?
... втянулся в некоторые другие задачи и только сейчас имел возможность вернуться к этому. Он отлично работает на 50 000, 70 000 и 71 000 итераций, но затем по какой-то причине выдает ошибку NoneType, около 72 000 ??? Каждый раз, и информация, кажется, там есть ... она работала без параллелизма, это занимало часы.
pool = ThreadPoolExecutor(max_workers = 25)
results = list(tqdm(pool.map(get_ips_from_sysinfo, urls), total=len(urls)))
, а затем немного get_ips_from_sysinfo
def get_ips_from_sysinfo(urls):
sysinfo = hx_request(urls)
ip_dict =[]
sysinfo = sysinfo["data"]
hostname = sysinfo.get("hostname")
print(hostname)
network_array = sysinfo.get("networkArray", {})
network_info = network_array.get("networkInfo", [])
Работает на 69 000 70 000 71 000
Я не понимаю, почему это работает примерно до 72000 ???
Traceback (most recent call last):
File "RiskReportV2_concurrent.py", line 282, in <module>
concurrency(appliance)
File "RiskReportV2_concurrent.py", line 267, in concurrency
results = list(tqdm(pool.map(get_ips_from_sysinfo, urls), total=len(urls)))
File "/mnt/c/Users/money/Documents/riskreport/src/tqdm/tqdm/_tqdm.py", line 1022, in __iter__
for obj in iterable:
File "/usr/lib/python3.5/concurrent/futures/_base.py", line 556, in result_iterator
yield future.result()
File "/usr/lib/python3.5/concurrent/futures/_base.py", line 398, in result
return self.__get_result()
File "/usr/lib/python3.5/concurrent/futures/_base.py", line 357, in __get_result
raise self._exception
File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
result = self.fn(*self.args, **self.kwargs)
File "RiskReportV2_concurrent.py", line 135, in get_ips_from_sysinfo
sysinfo = sysinfo["data"]
TypeError: 'NoneType' object is not subscriptable
Наконец-то появилась возможность еще раз взглянуть на это, и я понятия не имею, правильно я это сделал или нет, но переключение функции на это работает
def get_ips_from_sysinfo(urls):
sysinfo = hx_request(urls)
ip_dict =[]
if not sysinfo:
print("None")
else:
sysinfo = sysinfo["data"]
... надеюсь, это кому-нибудь поможет!