Я работаю над проектом, который в основном требует от меня обрабатывать чуть менее 10 000 IP-адресов, используя ping. К сожалению, я запускаю машину на 8 гб и сбой, если попытаюсь обработать около 2000 IP-адресов. Ниже мой код (который я получил большинство из Fast ping sweep in python):Как уменьшить использование памяти при многопроцессорности python?
logs = open('addresses.txt', 'r').readlines()
pool = [ multiprocessing.Process(target=pinger, args=(jobs,results)) for log in logs ]
for p in pool:
p.start()
for i in logs:
jobs.put(i)
for p in pool:
jobs.put(None)
for p in pool:
p.join()
Я новичок в многопроцессорной, но мне было интересно, есть ли какой-нибудь способ, которым я все еще можете использовать его, но назначать задания для доли журналов, чтобы спасти память за счет времени, так что когда задания завершены, их можно переназначить в необработанные журналы. Извините, если это неясно - снова, новичок в этом.
hmmm ... попытаться ограничить количество процессов, которые работают одновременно? ;) – alfasin
@alfasin Я понимаю, что концептуально это то, что я должен делать. я не понимаю, как именно это сделать, а также как обеспечить надлежащее переназначение процессов. если честно, все еще пытаюсь обернуть голову вокруг многопроцессорности в целом – Mike