在使用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的话,还是会报同样的错误。

posted @ 2013-02-04 12:01  独孤侠  阅读(2058)  评论(0编辑  收藏  举报