Multiprocessing-Paket in interaktiven Python

Ich habe den folgenden Code test.py:

#multiprocessing in the interactive Python import time from multiprocessing import Process, Pipe def MyProcess(a): while(1): time.sleep(1) a.send("tic") if __name__ == "__main__": a, b = Pipe() p = Process(target=MyProcess, args=(a,)) p.start() while(1): msg=b.recv() print(msg) 

Es funktioniert gut, wenn ich es in der DOS-Shell ausführen "python test.py" Aber es funktioniert nicht, wenn ich "Execute File" von IEP (Pyzo).

 Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\pyzo2014a_64b\lib\multiprocessing\spawn.py", line 106, in spawn_main exitcode = _main(fd) File "C:\pyzo2014a_64b\lib\multiprocessing\spawn.py", line 116, in _main self = pickle.load(from_parent) AttributeError: Can't get attribute 'MyProcess' on <module '__main__' (built-in)> 

Ich habe festgestellt, dass dies eine dokumentierte "Frage" ist. Bitte überprüfen Sie die Antwort des Links unten.

Multiprocessing-Pausen im interaktiven Modus

Bedeutet das, dass ich kein Multiprocessing-Paket aus dem interaktiven Python verwenden sollte? Heißt das, ich kann keinen Prozess aus der IPython-Konsole erstellen? Jede Klärung darüber wird sehr geschätzt

One Solution collect form web for “Multiprocessing-Paket in interaktiven Python”

Richtig, man kann kein multiprocessing aus dem Dolmetscher verwenden … vor allem weil pickle nicht weiß, wie man interaktive Funktionen serialisiert. Allerdings, wenn Sie eine multiprocessing Gabel, genannt pathos.multiprocessing , können Sie tun, was Sie wollen, aus dem Dolmetscher. Dies funktioniert, weil pathos.multiprocessing dill , und dill weiß, wie man Funktionen (und andere Objekte) serialisieren, die im Interpreter definiert sind.

 >>> from pathos.multiprocessing import ProcessingPool as Pool >>> >>> p = Pool(4) >>> def squared(x): ... return x**2 ... >>> def pow(x,y): ... return x**y ... >>> a = range(10) >>> b = range(10,0,-1) >>> >>> p.map(squared, a) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> res = p.amap(pow, a, b) >>> print "asynchronous, and with multiple inputs!" asynchronous, and with multiple inputs! >>> res.get() [0, 1, 256, 2187, 4096, 3125, 1296, 343, 64, 9] 

Holen Sie sich hier pathos : https://github.com/uqfoundation

  • Starten Sie den Multicore-Hintergrundprozess aus der Django-Ansicht
  • Overpid Multiprocessing in Python
  • Kann nicht ändern globale dict Variable mit mutliprocessing in Python
  • Objekt mit Prozess verteilen (Multiprozess)
  • Zeigen Sie ein OpenCV-Video im tkinter mit Multiprocessing an
  • Cassandra assynchronous Ausführung in mehreren Prozessen blockiert synchrone Anfragen
  • Python Chunking CSV File Multiproccessing
  • Mit 100% aller Kerne mit Python (Multiprocessing)
  • Python Multiprocessing Liste-Wörterbuch Vergleich
  • Unterprozeß vervollständigt, aber immer noch nicht beendet, verursacht Deadlock
  • Multiprozess-Daemon, der nicht auf Elternteil beendet ist
  • Python ist die beste Programmiersprache der Welt.