首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >与字符串列表相比,带有dicts列表的beam.Create()非常慢

与字符串列表相比,带有dicts列表的beam.Create()非常慢
EN

Stack Overflow用户
提问于 2020-12-29 22:35:48
回答 1查看 217关注 0票数 0

我正在使用Dataflow处理一个包含大约400万个功能(约2GB )的Shapefile,并将几何图形加载到BigQuery中,因此在管道启动之前,我将shapefile特性提取到一个列表中,并使用beam.Create(features)初始化管道。有两种方法可以创建初始功能列表:

  1. 将每个特性导出为json字符串,后续DoFn将需要将其解析为dict:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
features = [f.ExportToJson() for f in layer]

  1. 导出从JSON字符串

预解析的python

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
features = [json.loads(f.ExportToJson()) for f in layer]

当使用选项1时,beam.Create(features)只需一分钟左右,管道就会继续。使用选项2,beam.Create(features)在6核i7上花费了类似于3+的时间,并且似乎花了很多时间在这里:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/apache_beam/typehints/trivial_inference.py", line 88, in <listcomp>
    typehints.Union[[instance_to_type(v) for k, v in o.items()]],
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/apache_beam/typehints/trivial_inference.py", line 88, in instance_to_type
    typehints.Union[[instance_to_type(v) for k, v in o.items()]],
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/apache_beam/typehints/trivial_inference.py", line 88, in <listcomp>

这是trivial_inference吗?当传入一个dicts列表时,会减慢beam.Create的速度吗?我是否可以将beam.Create配置为不执行它在那里试图做的任何事情,或者以其他方式加快它的速度,这样一个字典列表就不会比字符串列表慢100倍吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-23 16:41:28

非常有趣的结果!

我的猜测是,之所以会出现这种情况,是因为Create需要对接收到的所有数据进行筛选。字典的腌制大小可能很大,因为它们是作为Python对象被腌制的,而字符串则是作为Python字符串被腌制的。

你可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p
| beam.Create([f.ExportToJson() for f in layer])
| beam.Map(json.loads)

以避免额外的腌制。这有用吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65503012

复制
相关文章
python 字符串转列表,列表转字符串
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144126.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
1.2K0
python 字符串转列表,列表转字符串
Python 字符串与列表间的转换
字符串与列表间的转换 字符串转列表的函数–split 功能 将字符串以一定规则切割转成列表 用法 string.split(sep=None, maxsplit=-1) 参数 sep:切割的规则符号,不填写**,默认空格**,如字符串无空格不分割生成列表 maxsplit : 根据切割符号切割的次数, 默认**-1无限制** 返回值 返回一个列表 列表转字符串的函数–join 功能 将列表以一定规则转成字符串(元组,集合也可以) 用法 'sep'.join(iterable) 参数 sep: 生成字符串
Zkeq
2022/05/18
8710
python字符串转化列表_Python列表到字符串的转换[通俗易懂]
Sometimes we want to convert the list to a string so that we can print it or log it for debugging purposes. In this tutorial, we will learn how to convert a list to string in a Python program.
全栈程序员站长
2022/08/25
2.7K0
python3-列表与字符串
print(x) x3=tuple(x) print(x3) [1, 2, 5, 4, 3, 10, 20, [1, 2]] (1, 2, 5, 4, 3, 10, 20, [1, 2])
py3study
2020/01/06
6550
Python字符串,列表
字符串: 字符串的创建: 单引号, 双引号 ,三引号 <注意: 转义字符的使用> 字符串的特殊性: 索引 切片 连接 重复 成员操作符(in, not in)
py3study
2020/01/14
9810
useSet 应用:操作列表与渲染列表
使用useSet 时,存在数据类型转换的问题。 渲染模板不支持set迭代, 需要将set 类型转换为Array。 对于列表被包裹在对象中的情况。 可以通过创建渲染列表的操作映射,实现利用useSet,操作渲染列表。 export default function usePopForm (props, ctx){ const localNotifie = ref(props.notifie) // 列表set映射 const [ set, { add, remove, up
copy_left
2020/04/24
7250
Bash遍历字符串列表
大家知道,通过python可以很容易实现各类数据结构,例如列表。但在bash中,实现一个列表相对来说会比较复杂。
zero000
2021/03/23
7.1K0
Bash遍历字符串列表
列表:创建列表
列表是Tcl语言中最重要的一种数据结构。什么是列表?列表是元素的有序集合,各个元素可以包含任何字符串,例如空格,反斜杠,换行符等。列表表现为特定结构的字符串,这意味着可以把它们赋值给一个变量,可以把它们做为参数传给命令,可以把它们嵌套到其他列表中。
Lauren的FPGA
2019/10/30
2.4K0
字符串和列表之间的转换
在Tcl中所有数据类型都可以看作是字符串。字符串本身是由一个或多个字符组成;列表可以看作是由一个或多个相对独立的字符串构成,因此,两者之间在一定条件下是可以转换的。
Lauren的FPGA
2019/10/30
2.6K0
Python列表与元组
阅读文本大概需要 4.8 分钟 写在前面 经过一周的学习与试错,到现在基本上已经能够熟练掌握公众号的各项功能以及排版上的一些技巧了。从开始时的笨手笨脚,到现在略微的小有成就,说明其实每一天都在进步。 也许每一天的进步看起来可能微乎其微,但是坚持下来呢?如果以月、以年、以一生为单位的话会怎样呢? 今天在这里立个flag,一方面督促自己更好地坚持创作分享,和大家一起见证此公号的成长;另一方面也希望能给大家带来一些思考,开始着手于做自己感兴趣的事情。 分享给大家一句话:「当你决定好要做一件事情的时候那就开始吧,
Python技术与生活认知的分享
2018/07/03
7900
Python列表与元组
变量只能存一个数据,而集合能存储一组数据。本节我们来介绍两种Python中最常见的数据结构:列表与元组
小雨coding
2020/06/30
2.2K0
Redis列表与集合
前面文章我们介绍了STRING的基本命令,本文我们来看看Redis中的列表与集合。 本文是Redis系列的第五篇文章,了解前面的文章有助于更好的理解本文: ---- 1.Linux上安装Redis 2.Redis中的五种数据类型简介 3.Redis字符串(STRING)介绍 4.Redis字符串(STRING)中BIT相关命令 ---- 列表 列表是Redis中另外一种数据类型。下面我们来看看列表中一些基本的操作命令。 LPUSH 将一个或多个值value插入到列表key的表头,如果有多个value值,那
江南一点雨
2018/04/18
6750
列表长度与索引
借助llength命令可获取列表的长度(列表所包含的元素的个数,不难发现很多跟列表相关的命令都是以英文单词l(其大写为L)开头的)。图1显示列表a的长度为3。
Lauren的FPGA
2019/10/30
1.5K0
【Python】列表 List ⑦ ( 列表遍历 | 使用 while 循环遍历列表 | 使用 for 循环遍历列表 | while 循环 与 for 循环对比 )
将 列表 容器 中的数据元素 , 依次逐个取出进行处理的操作 , 称为 列表的遍历 ;
韩曙亮
2023/10/11
9140
python列表与元组的用法
7.列表生成式   #[i*i for i in range(10)]       [i*i for i in range(10) if i>5]
py3study
2020/01/17
7370
python中的列表与元组
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
六小登登
2019/08/14
3.1K0
Python列表与deque的区别
一日一技是一个每天更新的栏目,力图做到让你每天用2分钟的时间掌握一个开发技巧。 ---- 根据index读list,时间复杂度为O(1),deque是O(n) 在两头插入数据,deque的时间复杂度为O(1), list为O(n) deque是一个双向链表,所以操作头尾非常简单。 随机往中间插入数据,deque与list的时间复杂度都是O(n)
青南
2018/10/18
1.6K0
Python的字典与散列表
说明: 本文是上一篇《Python的可散列对象》的续篇,两者都是对《Python大学实用教程》和《跟老齐学Python:轻松入门》有关字典内容的进阶知识。
老齐
2021/03/11
4.7K0
点击加载更多

相似问题

与ToList()相比,ToListAsync()非常慢

20

QSerialPort readLine()与readAll()相比非常慢

14

与SQL相比,springboot JPA非常慢

187

与MS Access相比,SQLite非常慢

10

SQL Server -与NULL相比非常慢

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文