ContextManager получает доступ к locals() вызова с помощью блокаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 ContextManager получает доступ к locals() вызова с помощью блока

Сообщение Anonymous »


Я пытаюсь написать многопоточный помощник с контекстными менеджерами. Идея состоит в том, чтобы определить набор функций внутри блока, а менеджер контекста «волшебным образом» позаботится о планировании и обо всем остальном. Упрощенная рабочая версия выглядит так:

импортировать контекстную библиотеку @contextlib.contextmanager защита multi_threaded (количество): функции = [] функции доходности my_slice = int(count/len(funcs)) для меня функция в перечислении (функции): начало = my_slice * я func(начало, начало + my_slice) защита spawn_many(): набор данных = [1, 2, 3, 4, 5] с multi_threaded(len(dataset)) как mt: Защиту foo(start_idx, конец): print("foo" + str(набор данных[start_idx: end])) def bar(start_idx, end): print("bar" + str(набор данных[start_idx: end])) mt.append(фу) mt.append(бар) spawn_many() Этот пример работает, но я бы хотел избавиться от этих строк:

mt.append(foo) mt.append(бар) Так что пользователю нужно только определить функции, не добавляя их в коллекцию. Почему? Потому что она менее подвержена ошибкам, и я не смогу контролировать код, написанный с помощью этой библиотеки.

Проблема в том, что после выхода я выхожу за пределы области, в которой произошел def foo, поэтому я не знаю о locals(), существующем в этой области , и это, по сути, то, что мне нужно знать, какие функции там определены. Есть идеи/хитрости/слова поддержки?

Спасибо за чтение!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python: ContextManager для мутаций объектов?
    Гость » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Гость
  • ContextLib.contextManager не поднимает исключения, если возврат, наконец, в пункте
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Разница между форматом (**locals()) и f-строкой при использовании переменной в качестве ключа для словарей
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Измените существующую переменную в `locals()` или `frame.f_locals`
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • AttributeError: невозможно выбрать локальный объект «Flask.__init__..» из-за многопроцессорности
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»