Python: Запуск функции в потоке не изменяет current_thread ()

В настоящее время я пытаюсь понять, как работают потоки в python.

У меня есть следующий код:

def func1(arg1, arg2): print current_thread() .... class class1: def __init__(): .... def func_call(): print current_thread() t1 = threading.Thread(func1(arg1, arg2)) t1.start() t1.join() 

Я заметил, что оба вывода выводят одно и то же. Почему нить не меняется?

2 Solutions collect form web for “Python: Запуск функции в потоке не изменяет current_thread ()”

Вы выполняете функцию вместо ее передачи. Попробуйте это вместо этого:

 t1 = threading.Thread(target = func1, args = (arg1, arg2)) 

Вы вызываете функцию до того, как она будет передана конструктору Thread . Кроме того, вы указываете его как неправильный аргумент (первым позиционным аргументом конструктора Thread является group ). Предполагая, что func1 возвращает None то, что вы делаете, эквивалентно вызову threading.Thread(None) или threading.Thread() . Это объясняется более подробно в документах по потокам .

Чтобы заставить ваш код работать, попробуйте следующее:

 t1 = threading.Thread(target=func1, args=(arg1, arg2)) t1.start() t1.join() 
  • Python захватывает stdout из подпроцесса по строкам
  • Проверьте, является ли текущий поток основным потоком, в Python
  • Как вызвать элементы GUI в разных потоках Qt?
  • Есть ли простой способ рассказать, сколько времени потрачено на Python GIL?
  • Закрыть поток Python для предотвращения утечки памяти
  • Как избежать ожидания завершения потока - Python
  • импортировать внутри потока Python
  • Загрузка файла с использованием python с потоками
  • Python - лучший язык программирования в мире.