python - Linux 批量 mtime
问题描述
在处理大量数据时,尽量减少数据库请求的数量并执行批量操作反而对性能有很大帮助。
问题:是否可以在 Linux 上一次/批量检索 10,000 个文件的 mtimes?
我希望尽量减少系统调用。
在这里找不到东西:http ://www.gnu.org/software/libc/manual/html_node/index.html
PS:目前,我使用 python:os.walk 检索这些文件名。
解决方案
很难找到声称不存在某些东西的消息来源;)
fstat 的 Linux 手册页没有链接到有关批量统计请求的任何内容,所以我认为它不存在。
此外,如果您接受使用 python 的巨大性能损失,您不应该关心优化操作系统中最优化的东西之一。由于其动态的高级特性,Python 天生就很慢,因此更有效的优化包括:
- 在 python 中使用更快的算法
- 通过多处理和网络工作通过线程/协程分割计算工作
- 在pypy下运行代码(提供 jit 编译)
- 用cython重写部分程序(编译成 C 的静态类型 python)
- 用 C 重写部分程序并通过扩展将它们连接回 python
- 只需用 C/C++/go/rust/任何其他编译语言编写程序
快速的经验法则:在您的程序不消耗 100% 的所有 CPU 内核(或 CPU 的一个内核用于固有的不可并行任务)之前,您不应该考虑在算法、网络和并发级别上优化除当前代码之外的任何内容.
语言设计的一部分是编程速度与执行速度的平衡。实现更快的执行速度需要程序员提供更多的输入并减慢开发速度。如果你的程序最慢的地方是 10000 个系统调用——那么你肯定应该用 C 来编写它,但我相信你可以在你的程序中找到很多其他的东西来优化。
我建议使用分析器(例如内置profile)来查看代码中的真实热点。
推荐阅读
- python - 如何在 Jenkins 的无 GUI 模式下在锁定的远程机器上成功运行 AutoIT 脚本?
- python - AttributeError:“复合”对象在 vpython.py 中没有属性“_origin”
- python - ds = data_set(sys.argv[1]) IndexError: 列表索引超出范围
- docker - 使用 docker 的 Traefik 配置文件位置
- sql - 带有时区的intellij sql错误
- jssor - Jssor Slider - 图像滑块(无法拖动图片)在重新创建滑块后不起作用
- sql - 如何使用 API 在 SQL 管理中获取和验证用户名和密码?
- jquery - jQuery 数据表中的上一个、下一个链接看起来太近了
- javascript - 如何使用 laravel 和 jquery 将 id 传递给控制器
- sql - 如何从不同的表(SQLite)中查询列中的特定值?