20251013

0145睡到0818,醒来莫名其妙的困,像是做了什么梦,但完全想不起来梦的内容。

直接kill process不会因为keyborad库卡输入,单独sys.exit(0)却会,为什么。

keyboard安装了全局钩子(hook),而 sys.exit() 只是退出当前线程/解释器流程,不会清理掉钩子线程。

而你用「直接 kill 进程」时,操作系统会强制终止所有线程,包括 keyboard 的后台监听线程。

项目sys.exit(0)os._exit(0)
实现方式抛出 SystemExit 异常直接调用系统底层的 _exit() 系统调用
清理行为执行 try/finallyatexit、缓冲区刷新等❌ 什么都不做,直接终止
子线程不会强杀子线程会立即杀死所有线程
文件/IO会刷新并关闭文件缓冲❌ 缓冲区丢失,文件可能不完整
推荐场景程序正常退出异常、崩溃、子进程立即退出等情况

但其实小脚本直接随意使用os._exit(0)似乎也不会有什么大问题。

看笑傲江湖发现岳不群他老婆称呼他为师兄,感觉好有情趣呀。

使用ffmpeg -i input.mp4 -vn -acodec libmp3lame -ab 192k output.mp3结果output音频的体积比input视频的体积还更大。看到别人可以直接改后缀把mp4变成mp3,为什么,和前者有什么区别。

体积大是因为比特率高;改后缀只是欺骗欺骗播放器。

前几天看到几年前的科技爱好者周刊看到有把ffmpeg写成py库的,避免了各种奇怪参数记不住的问题,但现在问LLM似乎是更方便的实践。

Tkinter UI 的回调中执行asyncio.run(controller.switch_line(line, place)),必定失败或卡死。

asyncio.run() 不能嵌套在已有事件循环中调用,否则会卡死或直接不执行。

Tkinter 的 mainloop() 本身就相当于一个阻塞事件循环。

Python 官方文档明确指出:

You cannot call asyncio.run() from a running event loop.

It must be the main entry point of the program.

包进线程就好了。也可以自己维护一个统一的事件循环。

星痕共鸣的网页签到有幽默bug,它本是购买礼包解锁下一个奖励,结果最后一天的10元红包逻辑似乎写反了,买礼包的无法领取,没买礼包的反而能领;qq群和游戏聊天都炸了,很好笑,特别在它游戏第二赛季延期产能低下的现在。

很想截图,游戏里大家疯狂刷收获满满的表情包,qq群里也火速出现各种名场面真的很难压住嘴角。但不得不说我这博客上传图片太麻烦了,上传到图床+我记不住的图片代码格式,懒得上传了,有机会补链接了。

唉不管了,在这种大节奏多看社群也不会有什么收获,上床享受入睡前的玩手机吧。

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计