2013-04-15 3 views
-1

У меня есть вопрос (начинающий).Python: уровень изоляции процесса python, когда классы «обезьяньей патчей»

Я намерен запустить несколько веб-приложений (пирамидальных веб-приложений), и у меня есть общая библиотека (давайте назовем это базовое приложение), которая может использоваться как для webapps, так и включает в себя конфигурацию пирамиды и т. Д. Эти веб-приложения в конечном итоге будут раздельными wsgi-скрипты (возможно), заканчивающиеся тем, что сидят в одном виртуальном пространстве.

Мой вопрос: Каков уровень изоляции в питона, если классы я обезьяна патч в этой библиотеке (я в настоящее время динамично меняется базы для некоторых классов в этой библиотеке, которые могут быть ссылки с обеих WebApps).

, например:

в базовом приложении:

class_from_baseapp(grandparent): 
    pass 

в производных приложение 2:

from baseapp import class_from_baseapp 
#do some stuff with this class 
#and have another bunch of child classes too! 
class_from_childapp2(class_from_baseapp): 
    pass 

в производных приложение 1:

from baseapp import class_from_baseapp 
# then what I do is I change this dynamically to 
# class_from_baseapp(grandparent, mixin_class): 
# by altering the class' __bases__ 


class_from_childapp1(class_from_baseapp): 
    pass 

Итак, еще раз, мой вопрос: будет ли эта обезьяна исправление утечки в другое веб-приложение (веб-приложение 1), если оно импортирует/использует тот же класс, что и выше? Я не знаю, как работают процессы и потоковая изоляция в интерпретаторах python.

ответ

0

Если вы выполняете отдельные процессы, изоляция выполняется между процессами. Каждый интерпретатор Python имеет свои собственные ссылки на классы. Модифицированные в модулях модули памяти не влияют на какой-либо процесс, но процесс исправления был выполнен.

Темы, работающие в одном и том же процессе Python, используют одни и те же классы. В зависимости от того, как выполняется исправление (и какие ссылки потоки получаются до того, как происходит исправление), патч не может быть замечен всеми потоками, но в целом он будет.

Смежные вопросы