В Python можно ли перебирать значения, хранящиеся в локальном потоке каждого потока? - PullRequest
1 голос
/ 19 ноября 2011

Предположим, у меня есть это:

from threading import local
tl = local()

В разные моменты разные потоки в пуле потоков будут устанавливать что-то локальное для потока:

tl.resource = <something>

Можно ли выполнить итерацию по всему tl.resource, установленному каждым потоком?

1 Ответ

3 голосов
/ 19 ноября 2011

Не в Python, хотя вы могли бы иметь возможность копаться в состоянии интерпретатора в C и получать эту информацию (хотя я сомневаюсь в этом).Было бы разумно предположить, что это могло бы быть возможно, если бы local() возвратил синглтон для каждого потока, но это не - вызов local() несколько раз в одном потоке приведет к созданию нескольких уникальных локальных потоковэкземпляры хранилища (не возвращающие ссылку на один и тот же объект), и поэтому в структуре внутреннего потока Python нет ни одного поля, содержащего эти данные, что затрудняет проверку.

...