2006年02月17日 星期五 12:00
limodou,您好! 又测试了在父线程中进行死循环,也可以正常的释放锁,让其它线程运行。测试了如下程序: #!/usr/bin/env python import Tkinter, threading, time class Myprint(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): time_str=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) name_str = self.getName() while 1: time.sleep(1) print 'Client:' + name_str +' ' + time_str client_t = Myprint() client_t.start() time.sleep(5) root = Tkinter.Tk() root.mainloop() 在窗口起来后,打印还是正常进行。说明tk的主窗口有把锁给释放了,不过,看过一个帖子,好像gtk的就不行,主窗口一起来,打印就中止了,锁好像没有释放。 ======= 2006-02-17 11:09:52 您在来信中写道:======= >On 2/17/06, charles huang <hyy at fjii.com> wrote: >> 写了段代码,如下,运行起来还是符合我原先的预期的。把死循环放在最后生成的线程中运行,整个程序的运行还是正常的。不晓得窗口程序,最后调用的loop之类的函数,是什么个机理。 >> >> #!/usr/bin/env python >> import threading, time >> >> class Myprint(threading.Thread): >> def __init__(self,main_name): >> self.f_name = main_name >> threading.Thread.__init__(self) >> >> def run(self): >> time_str=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) >> name_str = self.getName() >> while 1: >> time.sleep(1) >> print 'Main:' + self.f_name + ' Client:' + name_str +' ' + time_str >> >> class Mythread(threading.Thread): >> def __init__(self): >> threading.Thread.__init__(self) >> >> def run(self): >> name_str = self.getName() >> for j in range(1, 5): >> print 'Main:' + name_str >> Myclient = Myprint(name_str) >> Myclient.start() >> >> for i in range(1, 5): >> Mymain = Mythread() >> Mymain.start() >> >> >> >> 致 >> 礼! >> >> >> charles huang >> 2006-02-17 >> > >窗口程序是一个事件循环处理系统。没有事件时它就循环,有事件时就分发。 > >-- >I like python! >My Blog: http://www.donews.net/limodou >NewEdit Maillist: http://groups.google.com/group/NewEdit >_______________________________________________ >python-chinese >Post: send python-chinese at lists.python.cn >Subscribe: send subscribe to python-chinese-request at lists.python.cn >Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn >Detail Info: http://python.cn/mailman/listinfo/python-chinese = = = = = = = = = = = = = = = = = = = = 致 礼! charles huang hyy at fjii.com TEL: 0591-3333169-212 2006-02-17
2006年02月17日 星期五 12:09
On 2/17/06, charles huang <hyy at fjii.com> wrote: > limodou,您好! > > 又测试了在父线程中进行死循环,也可以正常的释放锁,让其它线程运行。测试了如下程序: > #!/usr/bin/env python > import Tkinter, threading, time > > class Myprint(threading.Thread): > def __init__(self): > threading.Thread.__init__(self) > > def run(self): > time_str=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) > name_str = self.getName() > while 1: > time.sleep(1) > print 'Client:' + name_str +' ' + time_str > > client_t = Myprint() > client_t.start() > time.sleep(5) > > root = Tkinter.Tk() > root.mainloop() > > 在窗口起来后,打印还是正常进行。说明tk的主窗口有把锁给释放了,不过,看过一个帖子,好像gtk的就不行,主窗口一起来,打印就中止了,锁好像没有释放。 > 子线程应该放到事件循环中,而不是独立出来。你的程序线程与窗口无关,可能会有冲突。比如在启动了主窗体之后,再执行线程。 -- I like python! My Blog: http://www.donews.net/limodou NewEdit Maillist: http://groups.google.com/group/NewEdit
Zeuux © 2025
京ICP备05028076号