本文目录一览:
- NetworkX和Graphscope哪个运算速度更快?
- python字典写入到excel中 我的字典格式是dat={'1.1.1.1':100,'2.2.2.2':222} 怎么把这个字典写到excel中
- 请翻译成中文,感谢。
NetworkX和Graphscope哪个运算速度更快?
近年来,全球大数据进入加速发展时期,数据量呈现指数级爆发式增长,而这些大量数据中不同个体间交互产生的数据以图的形式表现,如何高效地处理这些图数据成为了业界及其关心的问题。很过用普通关系数据无法跑出来的结果,用图数据进行关联分析会显得异常高效。 提到处理图数据,我们首先想到NetworkX,这是网络计算上常用的Python包,可提供灵活的图构建、分析功能。但是我们使用NetworkX跑大规模图数据时,不仅经常碰到内存不足的问题,而且分析速度很慢,究其原因,是NetworkX只支持单机运行。通过网上搜索,新发现了一个名为GraphScope的系统不仅号称兼容NetworkX的API,而且支持分布式部署运行,性能更优。针对GraphScope和NetworkX的处理能力,我们参考图计算中常用的测试框架LDBC,通过一组实验来对比下二者的性能。 一、实验介绍 为了比较两者的计算效率,先用阿里云拉起了配置为8核CPU,32GB内存的四台ECS,设计了三组比较实验,分别是NetworkX单机下的计算性能,GraphScope单机多worker的计算性能以及GraphScope分布式多机多worer的计算性能。 数据上,我们选取了SNAP开源的图数据集twitter,来自 LDBC数据集的datagen-7_5-fb,datagen-7_7-zf和datagen-8_0-fb作为实验数据,以下是数据集的基本信息:
- Twitter: 81,307个顶点,1,768,135条边
- Datagen-7_5-fb: 633,432个顶点,34,185,747条边,稠密图
- Datagen-7_7-zf: 13,180,508个顶点,32,791,267条边,稀疏图
- Datagen-8_0-fb: 1,706,561个顶点,107,507,376条边,这个数据集主要测试两个系统可处理的图规模能力 实验设计上我选择常用的SSSP、BFS、PageRank、WCC算法,以及较高复杂度的All Pair shortest Path length算法,以载图时间,内存占用和计算时间这三个指标为依据,对两个系统进行计算性能的比较。 NetworkX是一个单机系统,在实验中只考虑NetworkX在单机环境下的运行时间;GraphScope支持分布式运行,故进行两个配置,一个是单机4worker,另外一个配置是4台机器,每台机器4个worker。 二、实验结果 首先,GraphScope的载图速度比NetworkX显著提升。 在前三个图数据集中,无论是GraphScope的单机多worker模式,还是GraphScope的分布式模式,载图速度都比NetworkX快: GraphScope单机模式载图速度平均比NetworkX快5倍,最高纪录——在datagen-7_5-fb上比NetworkX快了6倍。 分布式模式下GraphScope的载图时间比NetworkX平均快了27倍,最高纪录——在datagen-7_7-zf数据集上比NetworkX快了63倍。 在datagen-8_0-fb数据集上,NetworkX因内存溢出无法载图,GraphScope单机多worker和GraphScope分布式载图时间分别为142秒和13.6秒。 表一:载图时间对比 | 载图时间 | NetworkX | GraphScope单机 | GraphScope分布式 | |------------------|----------|----------------|------------------| | twitter | 11.2 | 3.1 | 1.8 | | datagen-7_5-fb | 256 | 45.6 | 36.6 | | datagen-7_7-zf | 316 | 71.3 | 50 | | datagen-8_0-fb | OOM | 142 | 13.6 | 其次,GraphScope的内存使用效率比NetworkX显著提升。 在datagen-8_0-fb数据集上,NetworkX在32G的内存上无法载完图,而GraphScope仅需要24G的内存即可载入在datagen-8_0-fb数据集。 表二:内存占用对比 | 内存占用 | NetworkX | GraphScope | |------------------|----------|------------| | datagen-7_5-fb | 14G | 6G | | datagen-7_7-zf | 28G | 18G | | datagen-8_0-fb | OOM | 24G | 再次,GraphScope的计算速度比NetworkX显著提升。 SSSP算法上,GraphScope单机多worker模式平均要比NetworkX快22倍,最快在datagen-7_7-zf数据集上快了32倍。GraphScope分布式模式下平均要比NetworkX快103倍,最快datagen-7_5-fb数据集上快了182倍。 表三: SSSP计算时间对比(单位:秒) | SSSP | NetworkX | GraphScope单机 | GraphScope分布式 | |------------------|----------|----------------|------------------| | twitter | 2.45 | 1.32 | 0.28 | | datagen-7_5-fb | 37.9 | 1.21 | 0.31 | | datagen-7_7-zf | 5.84 | 0.18 | 0.03 | | datagen-8_0-fb | OOM | 2.76 | 0.82 | BFS算法上,GraphScope单机多worker模式平均要比NetworkX快13倍,最快datagen-7_5-fb数据集上快了22倍。GraphScope分布式模式下平均要比NetworkX快16倍,最快在datagen-7_5-fb数据集上快了28倍。 表四: BFS计算时间对比(单位:秒) | BFS | NetworkX | GraphScope单机 | GraphScope分布式 | |------------------|----------|----------------|------------------| | twitter | 1.53 | 0.16 | 0.17 | | datagen-7_5-fb | 44.68 | 2.52 | 1.56 | | datagen-7_7-zf | 7.98 | 0.75 | 0.72 | | datagen-8_0-fb | OOM | 11.02 | 5.73 | PageRank算法上,GraphScope单机多worker模式平均要比NetworkX快62倍,最快twitter数据集上快了80倍。GraphScope分布式模式下平均要比NetworkX快65倍,最快在twitter数据集上快了71倍。 另外,PageRank计算过程中,NetworkX在datagen-7_7-zf上内存溢出,没有完成计算,GraphScope单机多worker模式和分布式模式计算时间分别为25秒和22秒; 表五:PageRank计算时间对比(单位:秒) | PageRank | NetworkX | GraphScope单机 | GraphScope分布式 | |------------------|----------|----------------|------------------| | twitter | 24.01 | 0.37 | 0.33 | | datagen-7_5-fb | 300 | 6.73 | 5.17 | | datagen-7_7-zf | OOM | 19.31 | 7.79 | | datagen-8_0-fb | OOM | 24.96 | 21.88 | WCC算法上,GraphScope单机多worker模式平均要比NetworkX快44倍,最快在datagen-7_7-zf数据集上快了104倍。GraphScope分布式模式下平均要比NetworkX快76倍,最快datagen-7_5-fb数据集上快了194倍。 表六: WCC计算时间对比(单位:秒) | WCC | NetworkX | GraphScope单机 | GraphScope分布式 | |------------------|----------|----------------|------------------| | twitter | 0.6392 | 0.0296 | 0.0233 | | datagen-7_5-fb | 26.03 | 0.25 | 0.13 | | datagen-7_7-zf | 83.19 | 14.57 | 12.98 | | datagen-8_0-fb | OOM | 0.34 | 0.4991 | 在复杂度极高的All pair shortest path length算法上,NetworkX在twitter图上即内存溢出,无法计算。GraphScope在分布式模式下完成了twitter图的All pair shortest path length计算,耗时76分钟。 表七: All Pair Shortest Path Length(单位:秒) | APSP | NetworkX | GraphScope单机 | GraphScope分布式 | |------------------|----------|----------------|------------------| | twitter | OOM | OOM | 4575.87 | 三、总结 从实验结果可以看到,在同等条件下,无论在载图时间、内存占用和计算时间上,GraphScope都要大大优于NetworkX,性能优化可以达到几十倍甚至上百倍。
python字典写入到excel中 我的字典格式是dat={'1.1.1.1':100,'2.2.2.2':222} 怎么把这个字典写到excel中
01、如何在已有的单元格中批量加入一段固定字符? 例如:在单位的人事资料,在excel中输入后,由于上级要求在原来的职称证书的号码全部再加两位,即要在每个人的证书号码前再添上两位数13,如果一个一个改的话实在太麻烦了,那么我们可以用下面的办法,省时又省力: 1)假设证书号在A列,在A列后点击鼠标右键,插入一列,为B列; 2)在B2单元格写入: ="13"&A2 后回车; 3)看到结果为 13xxxxxxxxxxxxx 了吗?鼠标放到B2位置,单元格的下方不是有一个小方点吗,按着鼠标左键往下拖动直到结束。当你放开鼠标左键时就全部都改好了。若是在原证书号后面加13 则在B2单元格中写入:=A2&"13" 后回车。 02、如何设置文件下拉窗口的最下面的最近运行的文件名个数? 打开“工具”,选“选项”,再选“常规”,在“最近使用的文件清单”下面的文件个数输入框中改变文件数目即可。若不在菜单中显示最近使用的文件名,则将“最近使用的文件清单”前的复选框去掉即可。 03、在EXCEL中输入如“1-1”、“1-2”之类的格式后它即变成1月1日,1月2日等日期形式,怎么办? 这是由于EXCEL自动识别为日期格式所造成,你只要点击主菜单的“格式”菜单,选“单元格”,再在“数字”菜单标签下把该单元格的格式设成文本格式就行了。 04、在EXCEL中如何使它象WORD一样的自动定时保存文件? 点击“工具”菜单“自动保存”项,设置自动保存文件夹的间隔时间。如果在“工具”菜单下没有“自动保存”菜单项,那么执行“工具”菜单下“加载宏...”选上“自动保存”,“确定”。然后进行设置即可。 05、用Excel做多页的表格时,怎样像Word的表格那样做一个标题,即每页的第一行(或几行)是一样的。但是不是用页眉来完成? 在EXCEL的文件菜单-页面设置-工作表-打印标题;可进行顶端或左端标题设置,通过按下折叠对话框按钮后,用鼠标划定范围即可。这样Excel就会自动在各页上加上你划定的部分作为表头。 06、在Excel中如何设置加权平均? 加权平均在财务核算和统计工作中经常用到,并不是一项很复杂的计算,关键是要理解加权平均值其实就是总量值(如金额)除以总数量得出的单位平均值,而不是简单的将各个单位值(如单价)平均后得到的那个单位值。在Excel中可设置公式解决(其实就是一个除法算式),分母是各个量值之和,分子是相应的各个数量之和,它的结果就是这些量值的加权平均值。 07、如果在一个Excel文件中含有多个工作表,如何将多个工作表一次设置成同样的页眉和页脚?如何才能一次打印多个工作表? 把鼠标移到工作表的名称处(若你没有特别设置的话,Excel自动设置的名称是“sheet1、sheet2、sheet3.......”),然后点右键,在弹出的菜单中选择“选择全部工作表”的菜单项,这时你的所有操作都是针对全部工作表了,不管是设置页眉和页脚还是打印你工作表。 08、EXCEL中有序号一栏,由于对表格进行调整,序号全乱了,可要是手动一个一个改序号实在太慢太麻烦,用什么方法可以快速解决? 如果序号是不应随着表格其他内容的调整而发生变化的话,那么在制作EXCEL表格时就应将序号这一字段与其他字段分开,如在“总分”与“排名”之间空开一列,为了不影响显示美观,可将这一空的列字段设为隐藏,这样在调整表格(数据清单)的内容时就不会影响序号了。 09、用Excel2000做成的工资表,只有第一个人有工资条的条头(如编号、姓名、岗位工资.......),想输出成工资条的形式。怎么做? 这个问题应该这样解决:先复制一张工资表,然后在页面设置中选中工作表选项,设置打印工作表行标题,选好工资条的条头,然后在每一个人之间插入行分页符,再把页长设置成工资条的高度即可。 使用自定义方式重装了一遍中文office,Excel的打印纸选项中只有A4一种,怎么办?随便安装一个打印机驱动程序就可以了。 10、在Excel中小数点无法输入,按小数点,显示的却是逗号,无论怎样设置选项都无济于事,该怎么办? 这是一个比较特殊的问题,我曾为此花了十几个小时的时间,但说白了很简单。在Windows的控制面板中,点击“区域设置”图标,在弹出的“区域设置属性”对话面板上在“区域设置”里选择“中文(中国)”,在“区域设置属性”对话面板上在“数字”属性里把小数点改为“.”(未改前是“,”),按 “确定”按钮结束。这样再打开Excel就一切都正常了。 11、如何快速选取特定区域? 使用F5键可以快速选取特定区域。例如,要选取A2:A1000,最简便的方法是按F5键,出现“定位”窗口,在“引用”栏内输入需选取的区域A2:A1000。 12、如何快速返回选中区域? 按Ctr+BacksPae(即退格键)。 13、如何快速定位到单元格? 方法一:按F5键,出现“定位”对话框,在引用栏中输入欲跳到的单元格地址,单击“确定”按钮即可。 方法二:单击编辑栏左侧单元格地址框,输入单元格地址即可。 14、“Ctrl+”的特殊功用 一般来说,当处理一个工作表中有很多数据的表格时,通过选定表格中某个单元格,然后按下 Ctrl+ 键可选定整个表格。Ctfl+* 选定的区域是这样决定的:根据选定单元格向四周辐射所涉及到的有数据单元格的最大区域。 15、如何快速选取工作表中所有包含公式的单元格? 有时,需要对工作表中所有包含公式的单元格加以保护,或填入与其他单元格不同的颜色,以提醒用户注意不能在有此颜色的区域内输入数据。以下方法可以帮助快速选取所有包含公式的单元格:选择“编辑”\“定位”,单击“定位条件”按钮,在“定位条件”对话框中选择“公式”项,按“确定”按钮即可。 16、如何在不同单元格中快速输入同一数内容? 选定单元格区域,输入值,然后按 Ctrl+ Enter键,即可实现在选定的单元格区域中一次性输入相同的值。 17、只记得函数的名称,但记不清函数的参数了,怎么办? 如果你知道所要使用函数的名字,但又记不清它的所有参数格式,那么可以用键盘快捷键把参数粘贴到编辑栏内。 具体方法是:在编辑栏中输入一个等号其后接函数名,然后按 Ctr+ A键,Excel则自动进入“函数指南——步骤 2之2”。当使用易于记忆的名字且具有很长一串参数的函数时,上述方法显得特别有用。 18、如何把选定的一个或多个单元格拖放至新的位置? 按住Shift键可以快速修改单元格内容的次序。 具体方法是:选定单元格,按下Shift键,移动鼠标指针至单元格边缘,直至出现拖放指针箭头(空心箭头),然后按住鼠标左键进行拖放操作。上下拖拉时鼠标在单元格间边界处会变为一个水平“工”状标志,左右拖拉时会变为垂直“工”状标志,释放鼠标按钮完成操作后,选定的一个或多个单元格就被拖放至新的位置。 19、如何让屏幕上的工作空间变大? 可以将不用的工具栏隐藏,也可以极大化Excel窗口,或者在“视图”菜单中选择“全屏显示”命令。 20、如何使用快显菜单? 快显菜单中包括了一些操作中最常用的命令,利用它们可以大大提高操作效率。首先选定一个区域,然后单击鼠标右健即可调出快显菜单,根据操作需要选择不同命令。
请翻译成中文,感谢。
Python(发音:[ 'paiθ(ə)n; (US) 'paiθɔn ]),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。 这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。 目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。 Python的Hello World程序 下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
#!/usr/bin/env python
print "Hello, world!"
Python的历史 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为 ABC 语言的一种继承。之所以选中 Python(大蟒蛇的意思)作为程序的名字,是因为他是一个Monty Python的飞行马戏团的爱好者。 ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是非开放造成的。Guido 决心在 Python 中避免这一错误(的确如此,Python 与其它的语言如C、C和Java结合的非常好)。同时,他还想实现在 ABC 中闪现过但未曾实现的东西。 就这样,Python在Guido手中诞生了。实际上,第一个实现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。 Python在编程语言中的定位 虽然 Python 可能被粗略地分类为"脚本语言(scripting language)", 实际上一些大规模软件开发计划例如 Zope, Mnet 及 BitTorrent. Google也广泛地使用它。 Python 的支持者较喜欢称它为一种高阶动态编程语言 , 原因是"脚本语言" 泛指单用作简单编程任务如 shell scripts ,而Python不能与JavaScript等只能处理简单任务的编程语言相提并论。 Python的特色 可扩充性可说是Python作为一种编程语言的特色。新的内置模块(module)可以用C 或 C写成。而我们也可为现成的模块加上Python的接口。Python可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上。 Python也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Tim Peters写的python格言(称为The Zen of Python)里面表述为:
There should be one-- and preferably only one --obvious way to do it. 有意思的是,这正好和Perl语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。这似乎是人们常把Perl和Python互相比较的重要原因。 Python语言是一种清晰的语言的另一个意思是,它的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。这样有意的强制程序员养成良好的编程习惯。其中很重要的一项就是Python的缩进规则。