Contextualist 最近的时间轴更新
Contextualist

Contextualist

V2EX 第 168698 号会员,加入于 2016-04-17 17:49:12 +08:00
今日活跃度排名 9214
shx: 用 Python 写脚本的利器
分享创造  •  Contextualist  •  200 天前  •  最后回复来自 sinux
9
一张无法在微信里发送的 GIF
全球工单系统  •  Contextualist  •  259 天前  •  最后回复来自 Jaosn
3
最近发现 defaultdict 的一个奇技淫巧
Python  •  Contextualist  •  270 天前  •  最后回复来自 vegetableChick
15
Python 类型注解, Enum 还是 str Literal?
Python  •  Contextualist  •  303 天前  •  最后回复来自 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 最近回复了
14 小时 23 分钟前
回复了 randomboi 创建的主题 分享创造 写了一个从 GitHub Releases 安装可执行文件的服务
赞耶,节省了为每个项目写一个安装脚本的功夫。我之前维护了个重定向至特定系统架构的可执行文件下载链接的服务,这个方案完善得多
13 天前
回复了 firejoke 创建的主题 Python 关于 asyncio 执行 IO 密集型操作的不解
我对数据库不熟,不过我猜对于很多数据库并发写是不会有性能提升的,用单线程就可以了,但你可能需要 batch / bulk 操作,用来一次性插入数十条、数百条数据,而不是一次插入一条。
13 天前
回复了 firejoke 创建的主题 Python 关于 asyncio 执行 IO 密集型操作的不解
又看了一下你贴出来文件的部分,你是不是就两个大文件(就是说不是大量小文件),那文件 IO 就基本不可能是你的瓶颈,你看到磁盘读取没跑满很有可能是你下游的处理速度没跟上。

多进程和协程,感觉你自己也总结出来了。协程得用在有长时间等待系统调用 (syscall) 的地方(比如网络、子进程、定时任务)。CPU 密集的操作得用多线程或多进程,但在 Python 里有 GIL ,就只能用多进程。
13 天前
回复了 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 选项),而且大多数是语法的规则,像我提到的那种需要猜测代码意图的复杂情况可能还是比较难实现。不过对那些需要大面积改写的老代码做初筛还是很好用的。
46 天前
回复了 gengchun 创建的主题 问与答 youtube-dl 现在还活着吗?
之前遇到下载速度停留在十几 kb/s 的情况,查到对应的 GitHub issue 发现是个 bug 但开发者很久没管了。又看到 yt-dlp 这个活跃维护的分支,用了感觉不错,现在转投 yt-dlp 了
57 天前
回复了 Contextualist 创建的主题 分享创造 优雅地从 GitHub 下载 latest releases
@CharlieYu4994 @learningman
就目前来说,如果你需要的文件名在不同的 release 中都是一个固定的字符串,那推荐使用 GitHub 官方的直链。但有些仓库(比如 kcptun, frp )的作者会在文件名中包含版本号这种每个 release 都会变化的部分,那我这个的正则匹配还是有用武之地的。

顺带一提,开始写这个东西时,GitHub 还没有针对 latest release 的文件直链。
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2235 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 11:54 · PVG 19:54 · LAX 03:54 · JFK 06:54
♥ Do have faith in what you're doing.