Python: многопоточность: как Python различает разные экземпляры и потоки с одинаковыми именами? - PullRequest
0 голосов
/ 17 декабря 2018

Я только начинаю многопоточность.Вот код, который я нашел где-то в учебнике, и я пытаюсь обдумать его:

import threading, time

def f():
    print('thread function')
    time.sleep(1)

if __name__ == '__main__':
    for i in range(3):
        t = threading.Thread(target=f, name="t_thread")
        t.start()

Я понимаю, что вызов "start ()" несколько раз для объекта потока приводит к RuntimeError.

Но этот код создает несколько потоков, создавая несколько экземпляров класса «Thread» с тем же именем экземпляра «t» и тем же именем потока «t_thread», а затем вызывая «start ()» для него.Как Python может различать эти разные экземпляры и потоки с одинаковыми именами?Почему это не приводит к RuntimeError при вызове «start ()» на уже запущенном экземпляре?

Спасибо!

1 Ответ

0 голосов
/ 17 декабря 2018

поток name ничего не "делает", он может быть полезен для вызывающих ... из документов :

Строка, используемая только для идентификации,У него нет семантики.Несколько потоков могут иметь одно и то же имя.Начальное имя задается конструктором.

все значения / объекты в Python имеют свои собственные идентификаторы, вы можете получить это с помощью функции id:

id(t)

должен дать вам что-то уникальное для каждого Thread. Документы Python говорят:

Подробности реализации CPython: Это адрес объекта в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...