Conselho de multiprocessamento
Eu tenho tentado entender o multiprocessamento. O problema é que todos os exemplos que encontrei não parecem se encaixar no meu cenário. Gostaria de trabalhar com vários processos ou threads que envolvem o compartilhamento de uma lista de um argumento, agora é claro que não quero que um item da lista seja trabalhado duas vezes, para que o trabalho precise ser dividido em cada novo thread / processo (ou entre processos).
Qualquer conselho sobre a abordagem que eu deveria estar olhando seria apreciado.
Estou ciente de que meu código abaixo não está correto de forma alguma, é apenas para ajudar a visualizar o que estou tentando tentar explicar.
SUDO
def work_do(ip_list)
for ip in list
ping -c 4 ip
def mp_handler(ip_range):
p = multiprocessing.Pool(4)
p.map(work_do, args=(ip_range))
ip_list = [192.168.1.1-192.168.1.254]
mp_handler(ip_list)
EDITADO:
Algum código de trabalho
import multiprocessing
import subprocess
def job(ip_range):
p = subprocess.check_output(["ping", "-c", "4", ip])
print p
def mp_handler(ip_range):
p = multiprocessing.Pool(2)
p.map(job, ip_list)
ip_list = ("192.168.1.74", "192.168.1.254")
for ip in ip_list:
mp_handler(ip)
Se você executar o código acima, notará que os dois IPs são executados duas vezes. Como gerencio os processos para trabalhar apenas com dados exclusivos da lista?