[D]Python 多线程传参问题~

潇慕雨 2012-04-02 10:40:42
这是小弟在读Python核心编程时,将其多线程的mtsleep5.py做些许改动后的代码 想试着在一个自定义类中调用多线程
但在运行后每个线程都出现这个错误,求大虾指导啊~~~

Exception in thread loop:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "mtsleep5.py", line 16, in run
apply(self.func, self.args)
TypeError: loop() takes exactly 2 arguments (3 given)


1#!/usr/bin/env python
2
3 import threading
4 import pdb
5 from time import sleep, ctime
6
7 class MyThread(threading.Thread):
8 def __init__(self, func, args, name=''):
9 threading.Thread.__init__(self)
10 self.name = name
11 self.func = func
12 self.args = args
13
14 def run(self):
15 #pdb.set_trace()
16 apply(self.func, self.args)
17
18 class TestThread(object):
19 def __init__(self):
20 self.loops = [ 4, 2 ]
21 pass
22
23 def loop(nloop, nsec):
24 print 'start loop', nloop, 'at:', ctime()
25 sleep(nsec)
26 print 'loop', nloop, 'done at:', ctime()
27
28 def main(self):
29 print 'starting at:', ctime()
30 threads = []
31 nloops = range(len(self.loops))
32
33 for i in nloops:
34 t = MyThread(self.loop, (i, self.loops[i]), self.loop.__name__)
35 threads.append(t)
36
37 for i in nloops:
38 threads[i].start()
39
40 for i in nloops:
41 threads[i].join()
42
43 print 'all DONE at:', ctime()
44
45 if __name__ == '__main__':
46 test = TestThread()
47 test.main()



----------------
Double行动:
原帖分数:40
加分:40
...全文
449 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengna_com 2012-04-09
  • 打赏
  • 举报
回复
FireHell 2012-04-07
  • 打赏
  • 举报
回复
解决啦,祝贺
Gloveing 2012-04-02
  • 打赏
  • 举报
回复
潇慕雨 2012-04-02
  • 打赏
  • 举报
回复
额 我已知道是什么错了 loop函数改成类方法后忘了加 self 参数。。。

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧