如何使用 boto3 向函数添加类型提示而不使用 mypy_boto3 等外部库?这与 boto3.client 尤其令人困惑,它返回无法导入的 botocore.client.s3 类型的对象。
在下面的脚本中注释的示例函数是get_client和list_objects:
import boto3
def get_client():
return boto3.client('s3')
def list_objects(client):
response = client.list_objects(Bucket="a", Prefix="b")
for content in response.get('Contents', []):
yield content.get('Key')
client = get_client()
for f in list_objects(client):
print(f)
Run Code Online (Sandbox Code Playgroud)
我正在typing模块中开始,并查看了 python 3.6+ 中可用的不同选项,但不清楚运行时类型的类型提示是什么,例如boto3.client本例中返回的对象。
我编写了一个文本解析器,它使用 n 个解析器(通过对 n 个样本进行训练生成)解析给定的文本片段,其中包含类型列表
List(Parser1_Object, Parser2_Object, Parser1_Object, Parser3_Object,....)
请注意,每个对象都有参数(假设在本例中所有对象都有相同的名为 的参数param),其值可能会有所不同。我的目标是减少列表以删除通用解析器(即具有相同参数的对象)以供进一步处理和使用。为了实现同样的目标,我正在考虑将相同类型的元素分组,然后努力减少每个组。但是我不确定如何groupBy处理类型。任何建议/指示都会有所帮助(或者如果有更好的功能方法来解决问题)。
我试图压缩一个巨大的python对象〜15G,并将其保存在磁盘上.由于需求限制,我需要尽可能地压缩这个文件.我目前正在使用zlib.compress(9).我主要担心的是,在压缩过程中所占用的内存超过了我在系统32g上可用的内存,并且预计对象的大小会增加.是否有更有效/更好的方法来实现这一目标.谢谢.
更新:还要注意我要保存的对象是一个稀疏的numpy矩阵,我在压缩前序列化数据,这也增加了内存消耗.由于我在序列化后不需要python对象,gc.collect()会帮忙吗?
python ×2
boto ×1
boto3 ×1
collections ×1
compression ×1
list ×1
memory ×1
numpy ×1
scala ×1
type-hinting ×1
types ×1