Локальная память потока в Python

Я соглашаюсь с Grauenwolf и настоятельно рекомендовал бы Path.GetInvalidFileNameChars()

, Вот мой вклад C#:

string file = @"38?/.\}[+=n a882 a.a*/|n^%$ ad#(-))";
Array.ForEach(Path.GetInvalidFileNameChars(), 
      c => file = file.Replace(c.ToString(), String.Empty));

p.s. - это более загадочно, чем это должно быть - я пытался быть кратким.

64
задан Community 23 May 2017 в 12:02
поделиться

2 ответа

Как отмечено в вопросе, Алекс Мартелли дает решение здесь . Эта функция позволяет нам использовать фабричную функцию для создания значения по умолчанию для каждого потока.

#Code originally posted by Alex Martelli
#Modified to use standard Python variable name conventions
import threading
threadlocal = threading.local()    

def threadlocal_var(varname, factory, *args, **kwargs):
  v = getattr(threadlocal, varname, None)
  if v is None:
    v = factory(*args, **kwargs)
    setattr(threadlocal, varname, v)
  return v
16
ответ дан 24 November 2019 в 15:47
поделиться

Может также писать

import threading
mydata = threading.local()
mydata.x = 1

mydata.x будет существовать только в текущем потоке

5
ответ дан 24 November 2019 в 15:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: