Contextualist 最近的时间轴更新
Contextualist

Contextualist

V2EX 第 168698 号会员,加入于 2016-04-17 17:49:12 +08:00
今日活跃度排名 3620
shx: 用 Python 写脚本的利器
分享创造  •  Contextualist  •  192 天前  •  最后回复来自 sinux
9
一张无法在微信里发送的 GIF
全球工单系统  •  Contextualist  •  252 天前  •  最后回复来自 Jaosn
3
最近发现 defaultdict 的一个奇技淫巧
Python  •  Contextualist  •  262 天前  •  最后回复来自 vegetableChick
15
Python 类型注解, Enum 还是 str Literal?
Python  •  Contextualist  •  296 天前  •  最后回复来自 crclz
2
求推荐合适的 RPC 或 消息队列
问与答  •  Contextualist  •  2020-04-03 11:10:54 AM  •  最后回复来自 waising
5
劫持/接管进程的所有文件读写
问与答  •  Contextualist  •  2020-04-01 09:35:08 AM  •  最后回复来自 Contextualist
4
零配置命令行局域网传文件/剪贴板
分享创造  •  Contextualist  •  2019-07-25 08:20:24 AM  •  最后回复来自 Contextualist
9
V 语言到底是个怎样的存在?
编程  •  Contextualist  •  2019-07-18 19:34:54 PM  •  最后回复来自 legiorange
16
Contextualist 最近回复了
5 天前
回复了 firejoke 创建的主题 Python 关于 asyncio 执行 IO 密集型操作的不解
我对数据库不熟,不过我猜对于很多数据库并发写是不会有性能提升的,用单线程就可以了,但你可能需要 batch / bulk 操作,用来一次性插入数十条、数百条数据,而不是一次插入一条。
6 天前
回复了 firejoke 创建的主题 Python 关于 asyncio 执行 IO 密集型操作的不解
又看了一下你贴出来文件的部分,你是不是就两个大文件(就是说不是大量小文件),那文件 IO 就基本不可能是你的瓶颈,你看到磁盘读取没跑满很有可能是你下游的处理速度没跟上。

多进程和协程,感觉你自己也总结出来了。协程得用在有长时间等待系统调用 (syscall) 的地方(比如网络、子进程、定时任务)。CPU 密集的操作得用多线程或多进程,但在 Python 里有 GIL ,就只能用多进程。
6 天前
回复了 firejoke 创建的主题 Python 关于 asyncio 执行 IO 密集型操作的不解
看上去没有明显的问题,不过对于任何为了改进性能的重写建议还是先 profile 一下,看看瓶颈到底出在哪个调用上。

然后异步文件 IO 不是为了提升性能(降低平均延迟)的,而是为了降低尾延迟的,参见: https://trio.readthedocs.io/en/stable/reference-io.html#background-why-is-async-file-i-o-useful-the-answer-may-surprise-you
核心要义是利用这些软件调用脚本( bash 或 Automator ,macOS 其实开放了很多方便的命令),比如说 Karabiner Elements ,就是用它 Complex modifications 里的 `shell_command`(需要修改它的 JSON 配置文件,我会放在最后说)

我自己用了好几年的配置主要是用 Karabiner Elements 做键盘映射,ControlPlane 做情景感知,然后触发的都是脚本指令( Hammerspoon 几年前试过一下,弃用了,感觉 CPU 占用太高了,而且除了窗口排列相关的命令都可以用 Karabiner Elements + 脚本代替,不知道现在更新得怎么样了)

举几个代表性的例子:

Karabiner Elements:
右⇧ + d: 打开下载文件夹
右⇧ + delete:熄屏
⌥ ⌘ + F2(亮度+):禁止休眠并弹出一个常驻通知(点击通知以取消)
F3(任务控制) 和 F4(launchpad) 分别被映射为蓝牙和 WI-FI 的开关了

ControlPlane:
系统休眠前(合盖后)关 WI-FI ,系统唤醒后(开盖后)开 WI-FI
( ControlPlane 的作用相当于 iOS 快捷指令里的自动化,场景非常广,甚至有诸如当连接到特定显示器、摄像头光线传感器之类。可惜作者不主动维护了,Big Sur 还能用,就是不知道未来哪个 macOS 大版本就用不了了)

Karabiner Elements 的高级设置可以参看 https://karabiner-elements.pqrs.org/docs/manual/configuration/configure-complex-modifications/ 。先下载它的一些现成的配置,然后再找到它的 JSON 配置文件自己改。脚本命令的话,把自己的需求上网搜一下基本都能找到。
上下文管理器是(在字节码层面)被设计为必须将段落内容执行且只执行一次的。你这个需求可能得写个装饰器,然后把需要计时的片段放在一个被装饰的函数里。
@lisongeee 就我所知应该是没有一站式解决方案的(有过像 github.com/nvbn/py-backwards 这样的尝试,但没有持续更新)
在 Python 社区里更常见 backport package 这种零散的方式,比如自带的 __future__, 而在 PyPI 里可以找到把 contextlib, contextvars, data classes, 甚至 f-string 等新版本功能带到旧版本的包。
@janxin 哈哈是,那些我留意到的兼容代码我确实有写注释。不过对于足够老的代码就行不通了,比如说我写第一版代码的时候 Python 的最新版本是 3.7 ,我是不能预知 Python 3.9 的新功能的。或许代码老到一定程度就是维持现状或整体重构两条路了。

@Pagliacii 这个似乎是写给用我写的库的下游用户看的。不过 Python 标准库确实也会给 DeprecationWarning 。

@Trim21 好东西👍,试用了一下,这个似乎只是志在覆盖那些 100% 确定可以改写的代码(所以甚至没给只检测不修改文件的 dryrun 选项),而且大多数是语法的规则,像我提到的那种需要猜测代码意图的复杂情况可能还是比较难实现。不过对那些需要大面积改写的老代码做初筛还是很好用的。
39 天前
回复了 gengchun 创建的主题 问与答 youtube-dl 现在还活着吗?
之前遇到下载速度停留在十几 kb/s 的情况,查到对应的 GitHub issue 发现是个 bug 但开发者很久没管了。又看到 yt-dlp 这个活跃维护的分支,用了感觉不错,现在转投 yt-dlp 了
50 天前
回复了 Contextualist 创建的主题 分享创造 优雅地从 GitHub 下载 latest releases
@CharlieYu4994 @learningman
就目前来说,如果你需要的文件名在不同的 release 中都是一个固定的字符串,那推荐使用 GitHub 官方的直链。但有些仓库(比如 kcptun, frp )的作者会在文件名中包含版本号这种每个 release 都会变化的部分,那我这个的正则匹配还是有用武之地的。

顺带一提,开始写这个东西时,GitHub 还没有针对 latest release 的文件直链。
感谢作者,用了一年多了,用来做监控告警和耗时命令执行结束的提醒,非常稳定
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2378 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 19ms · UTC 06:11 · PVG 14:11 · LAX 22:11 · JFK 01:11
♥ Do have faith in what you're doing.