晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/opt/hc_python/lib/python3.12/site-packages/lxml/
Upload File :
Current File : //opt/hc_python/lib/python3.12/site-packages/lxml/debug.pxi
@cython.final
@cython.internal
cdef class _MemDebug:
    """Debugging support for the memory allocation in libxml2.
    """
    def bytes_used(self):
        """bytes_used(self)

        Returns the total amount of memory (in bytes) currently used by libxml2.
        Note that libxml2 constrains this value to a C int, which limits
        the accuracy on 64 bit systems.
        """
        return tree.xmlMemUsed()

    def blocks_used(self):
        """blocks_used(self)

        Returns the total number of memory blocks currently allocated by libxml2.
        Note that libxml2 constrains this value to a C int, which limits
        the accuracy on 64 bit systems.
        """
        return tree.xmlMemBlocks()

    def dict_size(self):
        """dict_size(self)

        Returns the current size of the global name dictionary used by libxml2
        for the current thread.  Each thread has its own dictionary.
        """
        c_dict = __GLOBAL_PARSER_CONTEXT._getThreadDict(NULL)
        if c_dict is NULL:
            raise MemoryError()
        return tree.xmlDictSize(c_dict)

    def dump(self, output_file=None, byte_count=None):
        """dump(self, output_file=None, byte_count=None)

        Dumps the current memory blocks allocated by libxml2 to a file.

        The optional parameter 'output_file' specifies the file path.  It defaults
        to the file ".memorylist" in the current directory.

        The optional parameter 'byte_count' limits the number of bytes in the dump.
        Note that this parameter is ignored when lxml is compiled against a libxml2
        version before 2.7.0.
        """
        cdef Py_ssize_t c_count
        if output_file is None:
            output_file = b'.memorylist'
        elif isinstance(output_file, unicode):
            output_file.encode(sys.getfilesystemencoding())

        f = stdio.fopen(output_file, "w")
        if f is NULL:
            raise IOError(f"Failed to create file {output_file.decode(sys.getfilesystemencoding())}")
        try:
            if byte_count is None:
                tree.xmlMemDisplay(f)
            else:
                c_count = byte_count
                tree.xmlMemDisplayLast(f, c_count)
        finally:
            stdio.fclose(f)

    def show(self, output_file=None, block_count=None):
        """show(self, output_file=None, block_count=None)

        Dumps the current memory blocks allocated by libxml2 to a file.
        The output file format is suitable for line diffing.

        The optional parameter 'output_file' specifies the file path.  It defaults
        to the file ".memorydump" in the current directory.

        The optional parameter 'block_count' limits the number of blocks
        in the dump.
        """
        if output_file is None:
            output_file = b'.memorydump'
        elif isinstance(output_file, unicode):
            output_file.encode(sys.getfilesystemencoding())

        f = stdio.fopen(output_file, "w")
        if f is NULL:
            raise IOError(f"Failed to create file {output_file.decode(sys.getfilesystemencoding())}")
        try:
            tree.xmlMemShow(f, block_count if block_count is not None else tree.xmlMemBlocks())
        finally:
            stdio.fclose(f)

memory_debugger = _MemDebug()