python - werkzeug(或celery)中关于Proxy的这段注释是什么意思?
PHPz
PHPz 2017-04-18 09:33:52
0
1
325

celery的源码local.py中有这么一个类Proxy,作者说是Code stolen from werkzeug.local.Proxy.,我核对了一下,代码确实是一样的,其中有这么一个方法:

def _get_current_object(self):        
    """Return the current object.  This is useful if you want the real       
    object behind the proxy at a time for performance reasons or because     
    you want to pass the object into a different context."""                         
    loc = object.__getattribute__(self, '_Proxy__local')                             
    if not hasattr(loc, '__release_local__'):                                        
        return loc(*self.__args, **self.__kwargs)                                    
    try:  # pragma: no cover                                                         
        # not sure what this is about                                                
        return getattr(loc, self.__name__)                                           
    except AttributeError:  # pragma: no cover                                       
        raise RuntimeError('no object bound to {0.__name__}'.format(self))

注释说这个方法有助于性能提升,还可以在不同的context中的传递对象。

我想问一下,这个函数或者说用Proxy提升性能的原理是什么?

望不吝赐教,谢谢!

PHPz
PHPz

学习是最好的投资!

membalas semua(1)
黄舟

Mungkin terdapat beberapa masalah dengan pemahaman soalan di sini Penulis tidak bercakap tentang meningkatkan prestasi, tetapi tentang sebab prestasi Kerana Proxy adalah proksi terpencil, jadi apabila anda menggunakan Proxy, aplikasi mesti menggunakan Objek yang sepadan, seperti current_app, mesti diproksikan sekali. . Dalam kes ini Boleh dikatakan bahawa _get_current_object dipanggil atas sebab prestasi. _get_current_object

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan