19得票1回答
为什么MySQLdb连接上下文管理器不会关闭游标?

MySQLdb Connections具有简单的上下文管理器,当进入时创建一个游标,在退出时要么回滚要么提交,并且隐式地不会抑制异常。请参考连接源码:def __enter__(self): if self.get_autocommit(): self.query("B...

19得票4回答
如何在异步循环关闭之前等待对象的 __del__ 完成?

我有一个类,其中将包含一个aiohttp.ClientSession对象。 通常情况下,当你使用async with aiohttp.ClientSession() as session: # some code 由于会话的 __aexit__ 方法被调用,会话将关闭。 我不能使...

19得票1回答
使用 threading.Lock 作为上下文管理器

在线程(threading)模块的文档中,它说: 此模块提供的所有对象都具有acquire()和release()方法,可用作with语句的上下文管理器。当进入代码块时,将调用acquire()方法,当退出代码块时,将调用release()方法。 我想知道它是以阻塞或非阻塞模式调用的?

18得票1回答
Python的记录器没有打印调试信息,尽管其设置正确。

我有以下代码,我只想使用contextmanager玩弄logging模块。 from contextlib import contextmanager import logging @contextmanager def log_level(level, name): logge...

18得票2回答
Python的MySQLdb上下文管理器

我习惯于(被宠坏了?)python的SQLite接口来处理SQL数据库。 Python SQLite的一个不错特性是“上下文管理器”,即Python的with语句。 我通常以以下方式执行查询:import as sqlite with sqlite.connect(db_filename) ...

17得票5回答
在C++中实现“上下文管理器”的最佳实践和语法

我们的Python代码库中有一些与指标相关的代码,看起来像这样: class Timer: def __enter__(self, name): self.name = name self.start = time.time() def __...

17得票3回答
没有yield的上下文管理器

我能否拥有一个上下文管理器,偶尔不进行yield操作,这种情况下with语句中的代码将不会被执行?import contextlib @contextlib.contextmanager def MayNotYield(to_yield): if to_yield: yield ...

17得票2回答
如何在PyCharm中正确注释ContextManager?

我该如何在PyCharm中注解contextmanager的yield类型,使其正确猜测在with语句中使用的值的类型 - 就像它猜测with open(...) as f中创建的f是一个文件一样? 例如,我有这样一个上下文管理器:@contextlib.contextmanager def ...

16得票2回答
手动打开上下文管理器。

我的问题是,我如何在不使用 with 的情况下执行任何上下文管理器? Python 有上下文管理器的概念, 而不是file = open('some_file', 'w') try: file.write('Hola!') finally: file.close() # en...

15得票2回答
如何创建一个包含循环的上下文管理器?

我想要类似这样的东西:from contextlib import contextmanager @contextmanager def loop(seq): for i in seq: try: do_setup(i) ...