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.
中创建和使用线程的一些问题
我是线程的新手,正在执行一个非常基本的线程示例。以下是我要执行的程序:
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.
中创建和使用线程的一些问题