获取终端大小的多个 urwid 调用使文件保持打开状态
multiple urwid calls getting terminal size leaves files open
如果我进行以下调用:
from urwid import raw_display
cols, rows = raw_display.Screen().get_cols_rows()
...文件描述符保持打开状态。多次调用此函数会使 Python 3 解释器崩溃;特别是如果像我以前那样做的话:
size = lambda rows = True: raw_display.Screen().get_cols_rows()[rows]
如何防止出现以下错误?
OSError: [Errno 24] Too many open files
仅创建 raw_display.Screen()
一次。
一种方法是使用默认参数;它只评估一次 - 当 function/lambda 被定义时:
size = lambda rows=True, scr=raw_display.Screen(): scr.get_cols_rows()[rows]
如果我进行以下调用:
from urwid import raw_display
cols, rows = raw_display.Screen().get_cols_rows()
...文件描述符保持打开状态。多次调用此函数会使 Python 3 解释器崩溃;特别是如果像我以前那样做的话:
size = lambda rows = True: raw_display.Screen().get_cols_rows()[rows]
如何防止出现以下错误?
OSError: [Errno 24] Too many open files
仅创建 raw_display.Screen()
一次。
一种方法是使用默认参数;它只评估一次 - 当 function/lambda 被定义时:
size = lambda rows=True, scr=raw_display.Screen(): scr.get_cols_rows()[rows]