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() 
  • Команда Subprocess не возвращает
  • Хороший пример реализации многопроцессорности?
  • Как остановить поток цикла в Python?
  • Пояснения демона
  • Нити Python в C
  • Почему нам нужны блокировки для потоков, если у нас есть GIL?
  • Накладные расходы на многопоточность
  • Python: чередующиеся функции каждые x минут
  • Закрытие всех потоков с помощью прерывания клавиатуры
  • Возможны ли асинхронные модели Django?
  • Почему экземпляр необходимо воссоздавать при перезапуске потока?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.