<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    常用鏈接

    統(tǒng)計

    最新評論

    How does Python manage memory?(http://docs.python.org/3.1/faq/design.html)

    The details of Python memory management depend on the implementation. The standard C implementation of Python uses reference counting to detect inaccessible objects, and another mechanism to collect reference cycles, periodically executing a cycle detection algorithm which looks for inaccessible cycles and deletes the objects involved. The gc module provides functions to perform a garbage collection, obtain debugging statistics, and tune the collector’s parameters.

    Jython relies on the Java runtime so the JVM’s garbage collector is used. This difference can cause some subtle porting problems if your Python code depends on the behavior of the reference counting implementation.

    Sometimes objects get stuck in tracebacks temporarily and hence are not deallocated when you might expect. Clear the tracebacks with:

    import sys
    sys.exc_clear()
    sys.exc_traceback = sys.last_traceback = None
    

    Tracebacks are used for reporting errors, implementing debuggers and related things. They contain a portion of the program state extracted during the handling of an exception (usually the most recent exception).

    In the absence of circularities and tracebacks, Python programs need not explicitly manage memory.

    Why doesn’t Python use a more traditional garbage collection scheme? For one thing, this is not a C standard feature and hence it’s not portable. (Yes, we know about the Boehm GC library. It has bits of assembler code for most common platforms, not for all of them, and although it is mostly transparent, it isn’t completely transparent; patches are required to get Python to work with it.)

    Traditional GC also becomes a problem when Python is embedded into other applications. While in a standalone Python it’s fine to replace the standard malloc() and free() with versions provided by the GC library, an application embedding Python may want to have its own substitute for malloc() and free(), and may not want Python’s. Right now, Python works with anything that implements malloc() and free() properly.

    In Jython, the following code (which is fine in CPython) will probably run out of file descriptors long before it runs out of memory:

    for file in <very long list of files>:
    f = open(file)
    c = f.read(1)
    

    Using the current reference counting and destructor scheme, each new assignment to f closes the previous file. Using GC, this is not guaranteed. If you want to write code that will work with any Python implementation, you should explicitly close the file; this will work regardless of GC:

    for file in <very long list of files>:
    f = open(file)
    c = f.read(1)
    f.close()
    

    posted on 2009-11-30 11:01 九寶 閱讀(286) 評論(0)  編輯  收藏 所屬分類: Python

    主站蜘蛛池模板: 亚洲综合亚洲综合网成人| 插B内射18免费视频| 亚洲精品无码不卡在线播放HE | 亚洲色大成网站WWW久久九九| 羞羞视频免费网站日本| 亚洲第一网站男人都懂| 一级人做人爰a全过程免费视频| 国产成人精品久久亚洲| 成在线人视频免费视频| 亚洲av无码一区二区三区网站 | 免费一本色道久久一区| 亚洲国产成人久久精品软件 | 57pao国产成视频免费播放| 7777久久亚洲中文字幕蜜桃| 999久久久免费精品国产 | 2017亚洲男人天堂一| 免费观看美女裸体网站| 免费看一级一级人妻片| 亚洲综合无码AV一区二区| 99久久人妻精品免费二区| 亚洲一区二区三区高清视频| 在线免费不卡视频| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲人成国产精品无码| 野花香高清在线观看视频播放免费 | 亚洲综合成人网在线观看| 久久精品免费一区二区喷潮| 春意影院午夜爽爽爽免费| 亚洲毛片在线观看| 免费观看大片毛片| 在线观看黄片免费入口不卡| 亚洲国产日韩在线成人蜜芽 | 成年人免费观看视频网站| 成人久久久观看免费毛片| 99久久亚洲精品无码毛片 | 亚洲日韩VA无码中文字幕 | 91久久青青草原线免费| 色窝窝亚洲av网| 亚洲精品高清视频| 免费成人av电影| 黄页免费的网站勿入免费直接进入|