Допустим, у нас есть следующий класс с методом class decorator, который заполняет некоторый список атрибутов класса.Это может быть связано с тем, что я хочу накапливать что-то, созданное несколькими декорированными функциями.
class Foo:
decorate_func_names = []
@classmethod
def decorate(cls, func):
cls.decorated_func_names.append(func.__name__)
return func
Теперь для стековых декораторов имеет смысл запускать их в режиме блокировки
@A.decorate
@A.decorate
def myfunc():
pass
иЯ предполагаю, что это одни и те же две функции в одном и том же модуле.
Но что, если у меня две функции в двух разных модулях?
moduleA.py:
@A.decorate
def myfuncA():
pass
moduleB.py:
@A.decorate
def myfuncB():
pass
Анализирует ли когда-либо анализатор python два модуля, которые могутбыть проанализирован отдельно параллельно (или даже просто одновременно) так, чтобы это не было синхронизированной / детерминированной операцией, или GIL защищает это (хотя только в параллельном случае я предполагаю, что это не будет)?Я не знаю, является ли это допустимым для переводчиков.Хотя я знаю, что это делают компиляторы.