Ich versuche, durch eine Liste von URLs zu iterieren, aber die Ausgabe, die ich bekomme, ist Zeichen für Zeichen, nicht Zeile für Zeile. Wenn es ohne Multiprocessing läuft, funktioniert es perfekt. Wenn ich versuche, mehrere Prozesse zu verarbeiten, beginnt es jedoch, Zeichen für Zeichen zu lesen. Warum ist das?Python - Iterator wird Zeichen für Zeichen, nicht Zeile für Zeile (wenn Multiprozessing)
Ich habe ausführlich gelesen, wie man Zeile für Zeile liest, und es sieht für mich so aus, wie ich es richtig mache. Wo gehe ich falsch? Es funktioniert perfekt ohne Multiprocessing.
import urllib.request
import urllib.error
import multiprocessing
def findAdmin(URLList):
# Loops through links
for link in URLList:
print (link)
# Multi-processing worker
def mp_worker(URLList):
findAdmin(URLList)
# Multi-processing handler
def mp_handler(URLList):
p = multiprocessing.Pool(2)
p.map(mp_worker, URLList)
if __name__ == '__main__':
URLList = open('sites.txt','r')
mp_handler(URLList)
## When running just findAdmin(URLList), the program works flawlessly.
# findAdmin(URLList)
Also muss ich etwas falsch in Bezug auf Multiprozessing tun. Aber ich kann einfach nicht herausfinden, was es ist. Jede Hilfe wird sehr geschätzt!
'p.map (mp_worker, URLList)' einreicht Jobs an den Pool mit jedem * Elemente * von 'URLList' als Arbeiter Argument, nicht mit dem ganzen' URLList'. Auch das ist keine Liste. – user2357112
Es ist eine Datei und versucht, nach jedem Element zu lesen. Ich verstehe jetzt. Wie könnte ich eine Lösung codieren? – YoshiBMF