с помощью кода с этого сайта: http://www.saltycrane.com/blog/2008/09/simplistic-python-thread-example/Как выполнить потоки в python?
Код
import time
from threading import Thread
def myfunc(i):
print "sleeping 5 sec from thread %d" % i
time.sleep(5)
print "finished sleeping from thread %d" % i
for i in range(10):
t = Thread(target=myfunc, args=(i,))
t.start()
и я получаю этот выход:
sleeping 5 sec from thread 0
sleeping 5 sec from thread 1
sleeping 5 sec from thread 2
sleeping 5 sec from thread 3
sleeping 5 sec from thread 4
sleeping 5 sec from thread 5
sleeping 5 sec from thread 6
sleeping 5 sec from thread 7
sleeping 5 sec from thread 8
sleeping 5 sec from thread 9
finished sleeping from thread 0
finished sleeping from thread 2
finished sleeping from thread 4
finished sleeping from thread 1finished sleeping from thread 6finished sleeping from thread 8
finished sleeping from thread 5finished sleeping from thread 7finished sleeping from thread 9
finished sleeping from thread 3
, что здесь происходит? Я в порядке с потоками, которые не печатаются по порядку, потому что это возможно, но почему они не печатают на новых линиях в конце? Я использую python 2.6 под windows xp
Думаю, вы можете быть правы. Это означает, что команда печати посылает только символ за раз. Есть 10 символов новой строки, потому что я проверил ... Странно, что меняются только символы новой строки. должно быть просто время. – Richard
Это не печать одного персонажа за раз (ну, конечно, на каком-то уровне); дело в том, что поведение оператора print состоит из двух шагов: «напечатать аргумент», а затем «напечатать новую строку, если за аргументом не была запятая». Планировщик потоков Python может переключать потоки между этими двумя шагами, но он не будет переключаться посредине одного - следовательно, поведение, которое вы видите. –