#1467·loguru

基于时间的单位测试协调可能无法保证线条订单

作者: ivyy-poison创建于 2026年4月8日更新于 2026年6月28日
标签enhancement

亲爱的Loguru维护者。

我想在测试中报告一个潜在的问题, 看起来测试目前依赖于线条之间的时间协调:

zz
def 线程  2 :
屏障。 等待( )
时间. sleep( 0.5)
logger.add( sink 2, 格式="{message}", catch=假名)
logger.info ("ccc{}dd",下一部(反))

意图似乎是将线'延迟到线'1 ' 执行:

[Python] def 线程 1 (): 屏障。 等待( ) logger.info("aaaa{}bb",下一部(反))


然而,`time.sleep(0.5)'实际上无法保证`thread 1'在`thread 2'恢复前完成`logger.info(.)'的电话。 它只将 " 第2行 " 延迟至少这一时间。 假设的订单可能不会在更高的系统负载下被持有,或者带有更高的线程并行性(例如:Python 3.14 自由行走模式).

请允许我建议用明确的 " 线索 " 来取代睡眠。 事件 " ,这样, " 第2行道 " 只有在 " 第1行道 " 完成伐木步骤后才能进行? 例如:

```(Python)
def 测试  safe adding while log2(写作) :
屏障=屏障(2)
计数器()
线程  1  logb  已完成 = 事件( )

shink 1 = 非安全Sink(1)
shink 2 = 非安全连接(1)
logger.add (sink  1, 格式="{message}", catch=False) 页面存档备份,存于互联网档案馆.

def 线程  1 ():
屏障。 等待( )
logger.info("aaaa{}bb",下一部(反))
线程  1  logb  已完成. set ()

def 线程  2 :
屏障。 等待( )
线程  1  logb  已完成.wait ()
logger.add( sink 2, 格式="{message}", catch=假名)
logger.info ("ccc{}dd",下一部(反))

线程 = [Thread(目标=thread 1),线程 (目标=thread 2).

用于线程 :
线程. start ()

用于线程 :
线程. join ()

logger.remove () 请检查url=值 (帮助)

(原始内容存档于2018-10-29) (中文(中国大陆) ). profile swink 1.write = "aaa0bb\nccc1ddd\n"
声明 switch 2. 写作"ccc1dd\n"

这在使测试依赖于一个明确的同步信号而不是固定的睡眠时间的同时保留了预定的命令.

如果你愿意,我很乐意作为公关提交这份申请。 再次感谢您的时间!