在使用threading模块时出现的一个小问题
#!/usr/bin/env python import threading from time import sleep, ctime loops = [4, 2] def loop(nloop, nsec): print 'start loop', nloop, 'at:', ctime() sleep(nsec) print 'loop', nloop, 'done at:', ctime() def main(): print 'starting at:', ctime() thread = [] nloops = range(len(loops)) for i in nloops: t = threading.Thread(target=loop, args=(i, loops[i])) thread.append(t) for i in nloops: thread[i].start() for i in nloops: thread[i].join() print 'all DONE at:', ctime() if __name__ == '__main__': main()
在学习threading时写了一个如上代码,然后保存threading.py后执行出现如下错误
[root@linux-vm scripts]#
./threading.py
starting at: Fri Aug 31 18:49:50 2012
Traceback (most
recent call last):
File "./multithread.py", line 31, in <module>
main()
File "./multithread.py", line 19, in main
t =
threading.Thread(target=loop, args=(i, loops))
AttributeError: 'module'
object has no attribute 'Thread'
Exception AttributeError: '_shutdown' in
<module 'threading' from '/data/scripts/threading.pyc'>
ignored
仔细看报错信息发现是threading.pyc有问题,后来经过研究发现是因为在程序中使用了import
threading语句导入threading模块,而文件名本身又叫threading.py所以直接导入的是程序本身,将程序名改名后,再将threading.pyc删除后正常。另外需要注意如果仅仅是程序名改名后而不删除threading.pyc的话,还是会报同样的错误。
技术是孤独的,但行走于技术之间又是无限的宽广!