2004年05月20日 星期四 16:00
把类和对象搞混了 > import threading,time > import sys > class mythread(threading.Thread):#继承线程的类 > def __init__(self): > threading.Thread.__init__(self)#继承线程的属性 > self.running=0#增加一个属性用来判断是否应该结束 > > > class test: > def __init__(self): > self.threadobj=mythread() ### self.threadobj = None > self.threadlist=[] > def t1(self,count): > self.running=1#让线程处于可运行状态 > i=0 > while i<10 and self.running==1: > i+=1 > print str(x)+str(i) > if i>5:#循环次后,让线程处于中止状态 > self.running=0 > > def start(self,x):#启动线程 > self.threadobj(target=self.t1, args=(x, )).start() ### self.threadobj = mythread(target=self.t1, args=(x, )).start() > self.threadlist.append(self.threadobj) > > test1=test() > for x in range(5): > test1.start(x) > > print '共有线程:',threading.activeCount() > for k in threading._active.keys(): > if threading._active[k] in threadlist: > threading._active[k].running=0 > del threading._active[k] > print '还剩线程: ',threading.activeCount() > > ----- Original Message ----- From: <info at xichen.com> To: "python-chinese" <python-chinese at lists.python.cn> Sent: Thursday, May 20, 2004 2:56 PM Subject: [python-chinese] 各位,还有一个继承的问题请教大家。 > python-chinese,您好! > 我写的一个多线程程序碰到问题。 > 我的思路是在一个类中继承其他类的方法和属性,然后加以扩充并满足自己的需要,但是运行程序时出现错误。>>> > Traceback (most recent call last): > File "C:\Documents and Settings\Administrator\桌面\test.py", line 29, in ? > test1.start(x) > File "C:\Documents and Settings\Administrator\桌面\test.py", line 24, in start > self.threadobj(target=self.t1, args=(x, )).start() > TypeError: 'mythread' object is not callable > >>> > > 附上程序,请教各位了。 > > # -*- coding: cp936 -*- > import threading,time > import sys > class mythread(threading.Thread):#继承线程的类 > def __init__(self): > threading.Thread.__init__(self)#继承线程的属性 > self.running=0#增加一个属性用来判断是否应该结束 > > > class test: > def __init__(self): > self.threadobj=mythread() > self.threadlist=[] > def t1(self,count): > self.running=1#让线程处于可运行状态 > i=0 > while i<10 and self.running==1: > i+=1 > print str(x)+str(i) > if i>5:#循环次后,让线程处于中止状态 > self.running=0 > > def start(self,x):#启动线程 > self.threadobj(target=self.t1, args=(x, )).start() > self.threadlist.append(self.threadobj) > > test1=test() > for x in range(5): > test1.start(x) > > print '共有线程:',threading.activeCount() > for k in threading._active.keys(): > if threading._active[k] in threadlist: > threading._active[k].running=0 > del threading._active[k] > print '还剩线程: ',threading.activeCount() > > > > > 致 > 礼! > > > info > info at xichen.com > 2004-05-20 > -------------------------------------------------------------------------------- > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese >
2004年05月20日 星期四 16:07
liux at gdcn.com,您好! 谢谢各位了,问题已经解决了。 ======== 2004-05-20 15:41:43 您在来信中写道: ======== ----- 原邮件 ----- 从: "info at xichen.com" <info at xichen.com> 日期: 星期四, 五月 20日, 2004 下午2:56 主题: [python-chinese] 各位,还有一个继承的问题请教大家。 > python-chinese,您好! > 我写的一个多线程程序碰到问题。 > 我的思路是在一个类中继承其他类的方法和属性,然后加以扩充并满足自己的需要,但是运行程序时出现错误。>>> > Traceback (most recent call last): > File "C:\Documents and Settings\Administrator\桌面\test.py", line > 29, in ? > test1.start(x) > File "C:\Documents and Settings\Administrator\桌面\test.py", line > 24, in start > self.threadobj(target=self.t1, args=(x, )).start() > TypeError: 'mythread' object is not callable > >>> > > 附上程序,请教各位了。 > > # -*- coding: cp936 -*- > import threading,time > import sys > class mythread(threading.Thread):#继承线程的类 构造函数的参数列表里少东西咯,应该是这样(斜体是后加的) > def __init__(self, group=None, target=None, name=None, args=(), kwargs={}): 其实最主要的是这里要改 > threading.Thread.__init__(self, group=None, target=None, name=None, args=(), kwargs={})#继承线程的属性 > self.running=0#增加一个属性用来判断是否应该结束 > > > class test: > def __init__(self): 这里注释掉了一行代码,不需要 #> self.threadobj=mythread() > self.threadlist=[] > def t1(self,count): > self.running=1#让线程处于可运行状态 > i=0 > while i<10 and self.running==1: > i+=1 > print str(x)+str(i) > if i>5:#循环次后,让线程处于中止状态 > self.running=0 > > def start(self,x):#启动线程 这里明显有问题,这样的代码在某些内存管理比较自由的语言里甚至有可能造成内存泄漏。应该修改为 self.threadobj = mythread(target=self.t1, args=(x, )) self.threadobj.start() > self.threadobj(target=self.t1, args=(x, )).start() 上面这行是错的 > self.threadlist.append(self.threadobj) > > test1=test() > for x in range(5): > test1.start(x) > > print '共有线程:',threading.activeCount() > for k in threading._active.keys(): 下面这行也是明显的错误,斜体是后加的 > if threading._active[k] in test1.threadlist: > threading._active[k].running=0 > del threading._active[k] > print '还剩线程: ',threading.activeCount() > > > > > 致 > 礼! > > > info > info at xichen.com > 2004-05-20 > = = = = = = = = = = = = = = = = = = = = = = 致 礼! info at xichen.com info at xichen.com 2004-05-20 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040520/2676de03/attachment.htm
2004年05月22日 星期六 11:26
ÎÒÏÖÔÚÔÙRH9ÏÂÓÃpython 2.2.X ±àдscript ³ÌÐò ½»»¥Ò»¸ö¼ìË÷ϵͳ¡£ ¸Äϵͳ¿ÉÒÔÒÔÒ»¸öÃüÁîÐÐÐÎʽÆô¶¯£¬ÀûÓà ÃüÁîÐУ¬ÔÚshellÀï½»»¥¼ìË÷¡£ ±ðµÄͬÃÅÓÐÓÃperl дµÄ£¬¶¼´óͬСÒì¡£ ÎÒÓÃsin,sout = os.popen2('com') À´´´½¨×ÓỊ̈߳¬µ÷ÓÃÄǸöϵͳ£¨'com'ÊÇÄǸöϵͳµÄÆô¶¯ÃüÁ֮ºóÓÃfile sin, sout ¡°ÐéÄâ¡°×ÓÏ̵߳Ästdin and stdout. Ò»¸ö·Ç³£ÓôÃƵÄÎÊÌâÊÇ£¬ÎÒºÃÏñÎÞ·¨½øÐн»»¥²Ù×÷¡£ ¸ù¾ÝÕâ¸ö¶ÔÏóµÄapi£¬ÎÒÕÒµ½µÄ£¬Ö»Óе±sin ¹Ø±Õºó£¬ÎÒ²ÅÄÜ´Ósout¶Á³ö×ÓÏ̵߳ÄÊä³ö½á¹û¡£ ÎÒµÄÌì°¡£¬µ«ÊÇÓеÄʱºòÎÒÐèÒª£¬¶Á³ö×ÓÏ̵߳ÄÊä³ö£¬È»ºóÔÙ×÷Ϊ²ÎÊýÊä»Øϵͳ£¬Íê³É¼ìË÷¡£¿ÉÊÇÒ»µ©ÎҹرÕÁËsin,¾Íû·¨ÔÙ½øÐÐÊäÈë²Ù×÷ÁË¡£ ÄÇôÎÒËƺõÖ»ÄܽøÐС°Ò»¸öÀ´»Ø¡±£¡°ÊäÈ룹رÕÊäÈ룶Á³öÊä³ö¡± ²»ÖªµÀÔÙÆäËûµÄscript ³ÌÐòÀïÃæÊDz»ÊÇÒ²ÊÇÕâÑù£¿±ÈÈçperl,Èç¹ûÊÇ£¬ÄÇôËûÃÇÊÇÔõô¸ã¶¨ÀàËƵĽ»»¥ÐÔ²Ù×÷µÄ£¿ ÒòΪÔÙ½øÐÐÒ»¸ö²éѯµÄʱºò²»ÄÜÖжÏϵͳ£¨×ÓỊ̈߳©·ñÔò£¬¼ìË÷½á¹û»áÓв»Í¬¡£ »òÕßÎҸɴà¾ÍÓôíÁË£¬Ó¦¸ÃÓÃos.exec ʲôµÄ£¿ лл´ó¼Ò°ïæ _________________________________________________________________ MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*. http://join.msn.com/?page=features/virus
Zeuux © 2024
京ICP备05028076号