Mam problem z kodem poniżej iz dowolnym kodem korzystającym z funkcji print
w procesach podrzędnych. Nie widzę żadnych wydrukowanych wyciągów, nawet jeśli używam sys.std[err|out].write('worker')
zamiast print
.Procesy potomne utworzone przy użyciu modułu wieloprocesorowego Pythona nie będą drukować
Jest to kod (from the official python documentation):
from multiprocessing import Process
def f(name):
print 'hello', name
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
Wyjście jest pusty.
Uwaga: Poniższy kod wykorzystuje moduł wątków i wypisuje wynik:
import threading
def f(name):
print 'hello', name
if __name__ == '__main__':
p = threading.Thread(target=f, args=('bob',))
p.start()
p.join()
Output: hello bob
Czy możesz wskazać mi do rozwiązania? Z góry dziękuję.
Wielkie dzięki, Tamas, ale to w moim przypadku nie zadziałało ... – John
Na jakiej platformie jesteś? Powyższe działa dla mnie na Mac OS X; w rzeczywistości działa nawet bez puszczania sys.stdout. –
Tamas, platforma, nad którą pracuję, to win32. Przy okazji, do tej pory próbowałem uruchomić kod w IDLE. Dzisiaj próbowałem uruchomić go z wiersza poleceń, używając następującej składni: python.exe my_prog.py i zadziałało. Ktoś wie, dlaczego? I jak wyświetlić wydruki, uruchamiając programy w IDLE? – John