背景:POSIX 定义的 off_t数据类型是一个大小可变的有符号整数,具体取决于环境。对于 64 位构建环境,它似乎始终是 64 位 off_t。对于 32 位系统,off_t 的大小取决于环境(通常由 _FILE_OFFSET_BITS 和相关控制)。
我正在使用 Python 的ctypes来访问使用off_t数据类型的。 ctypes的不具有一个类型off_t通过如此映射这样的API结构或另有所指选择,一些其他类型的由下式定义的ctypes,即一个c_int,c_int32,c_int64,c_long和c_longlong。
在四处寻找其他人的解决方案时,我见过各种各样的解决方案,其中大多数是猜测并仅限于其中一种环境,其中一些完全错误(使用无符号类型),而且没有一个是可移植的。
是否有一种健壮的、可移植的方法来确定off_t给定 Python 解释器的构建大小?
谢谢!
使用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) 在对下一代科学数据格式的讨论中,已经确定需要某种类似 JSON 的数据结构(字段的逻辑分组)。此外,最好利用现有的编码而不是使用自定义的二进制结构。对于序列化格式有很多选择。对于那些具有此类编码经验的人的任何指导或见解表示赞赏。
要求:在我们的格式中,数据需要打包在记录中,通常不大于 4096 字节。每条记录必须可独立使用。数据必须在未来几十年内可读。数据归档和交换是通过存储和传输一系列记录来完成的。数据损坏必须只影响损坏的记录,使文件/流/对象中的所有其他记录都可读。
优先级(大致按顺序)是:
我们已经开始研究 Protobuf ( Protocol Buffers RFC )、CBOR ( RFC ) 和一些MessagePack。
那些有经验的人提供的任何可以帮助我们确定最合适的信息,或者更重要的是,避免陷阱和死胡同的信息,我们将不胜感激。
提前致谢!