Multiprocessing Advice

Ich habe versucht, Multiprocessing in den Griff zu bekommen. Das Problem ist, dass alle Beispiele, auf die ich gestoßen bin, nicht zu meinem Szenario passen. Ich möchte Multiprozess- oder Thread-Arbeiten, bei denen eine Liste aus einem Argument gemeinsam genutzt wird, jetzt möchte ich natürlich nicht, dass ein Element aus dieser Liste zweimal bearbeitet wird, sodass die Arbeit auf jeden neuen Thread / Prozess aufgeteilt werden muss (oder prozessübergreifend).

Jeder Rat zu dem Ansatz, den ich mir ansehen sollte, wäre willkommen.

Ich bin mir bewusst, dass mein unten stehender Code in keiner Weise korrekt ist. Er dient nur zur Veranschaulichung meiner Erklärungsversuche.

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)

EDITED:

Einiger Arbeitscode

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)

Wenn Sie den obigen Code ausführen, werden Sie feststellen, dass beide IP-Adressen zweimal ausgeführt werden. Wie verwalte ich die Prozesse so, dass nur eindeutige Daten aus der Liste verarbeitet werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage