Я новичок в потоках и выполняю очень простой пример потока. Ниже приводится программа, которую я пытаюсь выполнить:Получение AttributeError: объект 'int' не имеет атрибута 'start' при попытке запустить базовую программу потоков
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» объект не имеет атрибута «старт»):
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'
Как видно из вывода, оба выполняются, но не так, как я ожидал (это чередующиеся отпечатки или что-то в этом роде). Это кажется более последовательным. Как изменить/исправить мою программу, чтобы получить ожидаемый результат?
расширить на этом, если вы хотите вызвать начало() в явном виде, использовать т = threading.Thread (Fn, арг, kwargs) t.start() –
Спасибо @ASmallShellScript – Idos
Okay. Итак, по вашему мнению, если я верну свой идентификатор, он выполнит штраф? Было бы полезно, если бы вы могли наброситься на это. Кроме того, когда я комментирую t1.start() и t2.start(), ошибка исчезла, но я получаю только i = 3 в качестве печати. Понятно, потому что нить не началась правильно? –