Getting AttributeError: 'int' object has no attribute 'start' when trying to run a basic thread program

Getting AttributeError: 'int' object has no attribute 'start' when trying to run a basic thread program

我是线程的新手,正在执行一个非常基本的线程示例。以下是我要执行的程序:

import os
import thread
import threading

def main():
    t1=thread.start_new_thread(prints,(3,))
    t2=thread.start_new_thread(prints,(5,))
    t1.start()
    t2.start()
    #t1.join()
    #t2.join()

def prints(i):
    while(i>0):
        print "i="+str(i)+"\n"
        i=i-1

if __name__=='__main__':
   main()

当我尝试执行时,我不断收到以下错误 (AttributeError: 'int' object has no attribute 'start'):

Traceback (most recent call last):
i=3
  File "thread_1.py", line 19, in <module>

    i=2

i=1
main()

i=5

i=4

i=3

i=2

i=1

  File "thread_1.py", line 8, in main
    t1.start()
AttributeError: 'int' object has no attribute 'start'

从输出中可以看出,两者都得到了执行,但不是我期望的方式(这是交错打印或类似的东西)。它似乎也更有顺序性。我怎样才能 modify/correct 我的程序获得预期的输出?

来自 thread.start_new_thread 的文档(我的粗体字):

Start a new thread and return its identifier.

所以您实际上是在 int 上调用 .start(),这显然是不允许的。 但是你 实际上正在执行函数 prints() 正如你注意到的那样:

The thread executes the function function with the argument list args (which must be a tuple).

This SO 问题可能会解决您关于在 Python.

中创建和使用线程的一些问题