小编ter*_*rse的帖子

是否可以便携式确定 Python 中 off_t 的适当映射以用于 ctypes?

背景:POSIX 定义的 off_t数据类型是一个大小可变的有符号整数,具体取决于环境。对于 64 位构建环境,它似乎始终是 64 位 off_t。对于 32 位系统,off_t 的大小取决于环境(通常由 _FILE_OFFSET_BITS 和相关控制)。

我正在使用 Python 的ctypes来访问使用off_t数据类型的。 ctypes的不具有一个类型off_t通过如此映射这样的API结构或另有所指选择,一些其他类型由下式定义的ctypes,即一个c_intc_int32c_int64c_longc_longlong

在四处寻找其他人的解决方案时,我见过各种各样的解决方案,其中大多数是猜测并仅限于其中一种环境,其中一些完全错误(使用无符号类型),而且没有一个是可移植的。

是否有一种健壮的、可移植的方法来确定off_t给定 Python 解释器的构建大小?

谢谢!

python ctypes posix

5
推荐指数
1
解决办法
150
查看次数

Python sqlite3:如何快速、干净地中断长时间运行的查询,例如使用 KeyboardInterrupt

使用sqlite3Python 中的模块,当收到SIGINT(例如Control-C)时,长时间运行的查询不会很快被中断/取消。sqlite3提供了一个interrupt()方法,但是没有如何使用的例子。

有没有一种简单的方法可以中断/取消通过 Python/sqlite3 运行的长时间运行的查询?

为了说明这一点,首先生成一个测试数据库和表:

import sqlite3
from random import randint

conn = sqlite3.connect("randtable.db", 10.0)
cursor = conn.cursor()

cursor.execute("CREATE TABLE randint (id integer, rand integer)")

for i in range(1000000):
    if i % 1000 == 0:
        print ("{0}...".format(i))
    rand = randint(0,1000000)
    cursor.execute("INSERT INTO randint VALUES ({0},{1})".format(i,rand))

conn.commit()
conn.close()
Run Code Online (Sandbox Code Playgroud)

然后在终端中执行长时间运行的 Python/sqlite3 脚本,并尝试使用 Control-C 中断它:

from __future__ import print_function
import sqlite3

def main():
    # Long running query (pathological by design)
    statement ='''
SELECT DISTINCT a.id,a.rand
FROM randint a …
Run Code Online (Sandbox Code Playgroud)

python sqlite

3
推荐指数
1
解决办法
2642
查看次数

长期归档数据格式的二进制序列化(Protobuf、CBOR、MessagePack 等)的注意事项

在对下一代科学数据格式的讨论中,已经确定需要某种类似 JSON 的数据结构(字段的逻辑分组)。此外,最好利用现有的编码而不是使用自定义的二进制结构。对于序列化格式有很多选择。对于那些具有此类编码经验的人的任何指导或见解表示赞赏。

要求:在我们的格式中,数据需要打包在记录中,通常不大于 4096 字节。每条记录必须可独立使用。数据必须在未来几十年内可读。数据归档和交换是通过存储和传输一系列记录来完成的。数据损坏必须只影响损坏的记录,使文件/流/对象中的所有其他记录都可读。

优先级(大致按顺序)是:

  • 稳定性,长期存档使用
  • 性能,主要是阅读
  • 存储不透明斑点的能力
  • 尺寸
  • 简单
  • 广泛的软件(又名库)支持
  • 流能力,在生成记录时传输和可读(如果可能)

我们已经开始研究 Protobuf ( Protocol Buffers RFC )、CBOR ( RFC ) 和一些MessagePack

那些有经验的人提供的任何可以帮助我们确定最合适的信息,或者更重要的是,避免陷阱和死胡同的信息,我们将不胜感激。

提前致谢!

format json protocol-buffers msgpack cbor

3
推荐指数
1
解决办法
8632
查看次数

标签 统计

python ×2

cbor ×1

ctypes ×1

format ×1

json ×1

msgpack ×1

posix ×1

protocol-buffers ×1

sqlite ×1