Multiprocessing-Paket in interaktivem 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 einwandfrei, wenn ich es in der DOS-Shell "python test.py" ausführe. Es funktioniert jedoch nicht, wenn ich "Execute File" von IEP (Pyzo) verwende.
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 ein dokumentiertes 'Problem' ist. Bitte überprüfen Sie die Antwort auf den unten stehenden Link.
multiprocessing bricht im interaktiven Modus ab
Bedeutet das, dass ich kein Multiprocessing-Paket aus dem interaktiven Python verwenden soll? Bedeutet das, dass ich keinen Prozess über die IPython-Konsole erstellen kann? Jede Klarstellung darüber wird sehr geschätzt