पर पाइथन मल्टीप्रोसेसिंग प्रोसेस आउटपुट कैसे भेज सकता हूं मैं टिंकर गुई में प्रदर्शित एक अजगर मल्टीप्रोसेसिंग प्रक्रिया से आउटपुट प्राप्त करने का प्रयास कर रहा हूं।मैं टिथरर गुई
मैं प्रक्रियाओं से उत्पादन एक जीयूआई के माध्यम से एक कमांड खोल करने के लिए, उदाहरण के लिए एक खोल प्रॉम्प्ट पर fllowing छोटे स्क्रिप्ट चलाने से भेज सकते हैं:
from multiprocessing import Process
import sys
def myfunc(text):
print text
sys.stdout.flush()
def f1():
p1 = Process(target = myfunc, args = ("Surprise",))
p1.start()
def f2():
p2 = Process(target = myfunc, args = ("Fear",))
p2.start()
def fp():
myfunc("... and an almost fanatical devotion to the Pope")
a = Tk()
b1 = Button(a, text="Process 1", command=f1)
b1.grid(row=0, column=0, pady=10, padx=10, sticky=SE)
b2 = Button(a, text="Process 2", command=f2)
b2.grid(row=0, column=1, pady=10, padx=10, sticky=SE)
b3 = Button(a, text="Parent", command=fp)
b3.grid(row=0, column=2, pady=10, padx=10, sticky=SE)
if __name__ == "__main__":
a.mainloop()
मैं भी एक के लिए माता पिता से उत्पादन भेज सकते हैं पाठ बॉक्स, myfunc
# sys.stdout.flush()
में stdout की फ्लशिंग बाहर टिप्पणी और बाद तुरंत जोड़ने "b3.grid ..." से ऊपर संशोधित करके उदाहरण के लिए लाइन निम्नलिखित:
class STDText(Text):
def __init__(self, parent, cnf={}, **kw):
Text.__init__(self, parent, cnf, **kw)
def write(self, stuff):
self.config(state=NORMAL)
self.insert(END, stuff)
self.yview_pickplace("end")
self.config(state=DISABLED)
messages = STDText(a, height=2.5, width=30, bg="light cyan", state=DISABLED)
messages.grid(row=1, column=0, columnspan=3)
sys.stdout = messages
हालांकि मैं यह नहीं समझ सकता कि प्रक्रियाओं से पाठ बॉक्स में आउटपुट कैसे भेजना है। क्या मुझे कुछ आसान याद आ रही है?
Unutbu - बहुत उपयोगी उत्तर के लिए धन्यवाद। यह निश्चित रूप से मेरे खिलौना उदाहरण हल करता है। (वास्तविक अनुप्रयोग में प्रक्रियाएं अलग-अलग फ़ंक्शंस चलाती हैं और आउटपुट संदेशों को स्वचालित रूप से उत्पन्न करती हैं (यानी पैरामीटर के रूप में उन्हें दिए गए कुछ विशिष्ट पाठ को मुद्रित नहीं करते हैं)। मैंने सोचा था कि पाइप में आने से बचने के लिए 'सस्ता' ढूंढना संभव था या नहीं, लेकिन मुझे लगता है कि शायद जाने का रास्ता है। – tchaz