python-multiprocessing-pool, warten Sie, bis die Prozesse und starten Sie benutzerdefinierte Prozesse

Früher habe ich python multiprocessing und tun, warten, dass alle Prozesse mit diesem code:

...
            results = []
            for i in range(num_extract):
                url = queue.get(timeout=5)
                try:
                    print "START PROCESS!"
                    result = pool.apply_async(process, [host,url],callback=callback)
                    results.append(result)
                except Exception,e:

                    continue


            for r in results:
                r.get(timeout=7)
...

ich versuche, mit pool.beitreten, bekomme aber Fehler:

Traceback (most recent call last):
  File "C:\workspace\sdl\lxchg\walker4.py", line 163, in <module>
    pool.join()
  File "C:\Python25\Lib\site-packages\multiprocessing\pool.py", line 338, in joi
n
    assert self._state in (CLOSE, TERMINATE)
AssertionError

Warum treten Sie nicht funktionieren? Und was ist der gute Weg, warten alle Prozesse.

Meine zweite Frage ist, wie kann ich neu starten bestimmter Prozess im pool? ich brauche das im Grund des memory-leak. Nun In der Tat mache ich den Umbau im pool, nachdem alle Prozesse Ihre Aufgaben (erstellen Sie neue Objekt-pool zu tun Prozess-Neustart).

Was ich brauche: ich habe zum Beispiel 4 Verfahren im pool. Dann Prozess, seine Aufgabe nach Aufgabe wird erledigt, ich brauche die Prozess Abbrechen und neu starten (auffrischen memory leak).

  • warum ist multiprocessing/pool.py Leben in site-packages und nicht direkt in Lib? Wenn Sie schon hacken, dann haben wir eine Art wissen müssen.
  • hmm.. ich weiß nicht wie ich es installieren mit dem windows installer... geted von der offiziellen Website..
  • ich habe python2.5
InformationsquelleAutor Evg | 2010-09-10
Schreibe einen Kommentar