support.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:zippy 作者: securesystemslab 项目源码 文件源码
def _memory_watchdog(start_evt, finish_evt, period=10.0):
    """A function which periodically watches the process' memory consumption
    and prints it out.
    """
    # XXX: because of the GIL, and because the very long operations tested
    # in most bigmem tests are uninterruptible, the loop below gets woken up
    # much less often than expected.
    # The polling code should be rewritten in raw C, without holding the GIL,
    # and push results onto an anonymous pipe.
    try:
        page_size = os.sysconf('SC_PAGESIZE')
    except (ValueError, AttributeError):
        try:
            page_size = os.sysconf('SC_PAGE_SIZE')
        except (ValueError, AttributeError):
            page_size = 4096
    procfile = '/proc/{pid}/statm'.format(pid=os.getpid())
    try:
        f = open(procfile, 'rb')
    except IOError as e:
        warnings.warn('/proc not available for stats: {}'.format(e),
                      RuntimeWarning)
        sys.stderr.flush()
        return
    with f:
        start_evt.set()
        old_data = -1
        while not finish_evt.wait(period):
            f.seek(0)
            statm = f.read().decode('ascii')
            data = int(statm.split()[5])
            if data != old_data:
                old_data = data
                print(" ... process data size: {data:.1f}G"
                       .format(data=data * page_size / (1024 ** 3)))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号