Итак, моя цель состоит в том, чтобы функция do_something()
запускала собственный поток, так что do_something()
может работать параллельно, а не ждать окончания предыдущего. Проблема в том, что похоже, что это не многопоточность (это означает, что один поток заканчивается до начала другого).Запуск нескольких потоков одновременно
for i in range(len(array_of_letters)):
if i == "a":
t = threading.Thread(target=do_something())
print "new thread started : %s"%(str(threading.current_thread().ident))
t.start()
У меня также есть current_thread().ident
внутри функции do_something()
но похоже идентичность потока, который запускается так же, как в основном потоке, что скрипт Питон работает с. Я думаю, что мой подход неверен.
@ Жан-Франсуа Фабр правильно, я считаю, о насущной проблеме. Даже с этим исправлением вы должны знать, что в потоках Python не выполняются одновременно, поскольку в большинстве случаев интерпретатор Python не может интерпретировать одновременно два или несколько разных потоков выполнения (и имеет что-то, называемое GIL (Global Interpreter Lock). Вместо этого происходит то, что он запускает один поток, пока он не блокирует ожидающий общий ресурс, не выполняет ввод/вывод или не вызывает вызов (sleep), и только после этого он переключается на запуск другого (если есть), который ждет своей очереди. – martineau