我试图从我的 dynamodb 表中删除一个项目,但是我收到了这个异常:
decimal.Inexact: [<class 'decimal.Inexact'>, <class 'decimal.Rounded'>]
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决它,有什么帮助吗?这是代码:
dynamodb = boto3.resource('dynamodb', region_name='***')
table = dynamodb.Table('***')
propid = 1234
column_set = Decimal(44.30912302164986)
print("Attempting a conditional delete...")
try:
response = table.delete_item(
Key={
'hashkey': propid,
'rangekey': column_set
},
)
except ClientError as e:
if e.response['Error']['Code'] == "ConditionalCheckFailedException":
print(e.response['Error']['Message'])
else:
raise
else:
print("DeleteItem succeeded:")
Run Code Online (Sandbox Code Playgroud)
后期编辑:
当我这样做时,它似乎没有正确存储:
year = decimal.Decimal(44.309123021649860)
Run Code Online (Sandbox Code Playgroud)
它打印:
44.30912302164986016350667341612279415130615234375
Run Code Online (Sandbox Code Playgroud) 我有一个大文件,我正在使用 mmap 读取它。我想在每一行上做一些操作,所以我在它上面调用了 split() ,它为每一行提供了一个迭代器:
let file = File::open("myfile").unwrap();
let mmap = unsafe { MmapOptions::new().map(&file).unwrap() };
//splitting by newline
let iter = mmap.split(|elem| elem == &b'\n');
Run Code Online (Sandbox Code Playgroud)
这工作正常并且没有给我任何问题 - 运行速度非常快。
但是,当我通过迭代器时,它会跳转,并且通过 for 循环所需的时间大约是读取和拆分时间的 4 倍。
此外,这不处理该行或在 for 循环内执行任何操作:
for elem in iter {
//process the line
}
Run Code Online (Sandbox Code Playgroud)
由于性能是一个问题 - 我发现它设法非常快速地读取和拆分文件很奇怪,但是,当我通过迭代器时它变得非常慢。我错过了什么吗?我对 Rust 的了解也很有限,所以不确定我是否在做坏事。有什么东西可以帮助我优化它并加快访问速度?
此外,并行迭代器在我的情况下没有那么有用 - 它们添加的开销不值得。
整个文件:
use memmap::MmapOptions;
use std::fs::File;
use std::time::{Duration, Instant};
fn main() {
let now = Instant::now();
let file = File::open("myfile").unwrap();
let mmap = unsafe { MmapOptions::new().map(&file).unwrap() }; …Run Code Online (Sandbox Code Playgroud)