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?

questionAnswers(2)

yourAnswerToTheQuestion