मैं पीईजीटीके के साथ थ्रेड-बग के साथ खेलना चाहता हूं। मेरे पास यह कोड अब तक है:गैर-जीयूआई थ्रेड्स को अवरुद्ध करने वाले पीईजीटीके
#!/usr/bin/python
import pygtk
pygtk.require('2.0')
import gtk
import threading
from time import sleep
class SomeNonGUIThread(threading.Thread):
def __init__(self, tid):
super(SomeNonGUIThread, self).__init__()
self.tid = tid
def run(self):
while True:
print "Client #%d" % self.tid
sleep(0.5)
class App(threading.Thread):
def __init__(self):
super(App, self).__init__()
self.window = gtk.Window()
self.window.set_size_request(300, 300)
self.window.set_position(gtk.WIN_POS_CENTER)
self.window.connect('destroy', gtk.main_quit)
self.window.show_all()
def run(self):
print "Main start"
gtk.main()
print "Main end"
if __name__ == "__main__":
app = App()
threads = []
for i in range(5):
t = SomeNonGUIThread(i)
threads.append(t)
# Ready, set, go!
for t in threads:
t.start()
# Threads work so well so far
sleep(3)
# And now, they freeze :-(
app.start()
ऐसा करता है कि nonGUIThreads 3 सेकंड के लिए चल रहे हैं। इसके बाद, खिड़की दिखाई जाती है और अन्य धागे रुक गए हैं! खिड़की बंद करने के बाद, धागे फिर से चल रहे हैं।
यह कैसे संभव है, gtk.main()
अन्य धागे को अवरुद्ध करने में सक्षम है? धागे किसी भी ताला पर निर्भर नहीं हैं, इसलिए उन्हें खिड़की के दौरान काम करना चाहिए।
आपके उत्तर के लिए धन्यवाद! मुझे वह पृष्ठ मिला लेकिन मैंने सोचा कि यह केवल स्थिति के लिए है जब थ्रेड जीटीके के साथ संवाद करना चाहते हैं। मैं गलत था। – izidor