В Python можно ли перебирать значения, хранящиеся в локальном потоке каждого потока?
Предположим, у меня есть это:
from threading import local
tl = local()
В разные моменты разные потоки в пуле потоков будут устанавливать что-то локальное для потока:
tl.resource = <something>
Можно ли перебрать все tl.resource, установленные каждым потоком?
1 ответ
Решение
Не в Python, хотя вы можете покопаться в состоянии интерпретатора в C и получить эту информацию (хотя я сомневаюсь в этом). Было бы разумно предположить, что это может быть возможно, если local()
вернул синглтон для каждого потока, но это не так - вызов local()
Несколько раз в одном и том же потоке будет генерироваться несколько уникальных экземпляров локального хранилища потока (не возвращать ссылку на один и тот же объект), и поэтому в структуре внутреннего потока Python нет ни одного поля, содержащего эти данные, что затрудняет проверку,