Python/Numpy大数据编程经验

1.边处理边保存数据,不要处理完了一次性保存。不然程序跑了几小时甚至几天后挂了,就啥也没有了。即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点。
 
2. 及时用 del 释放大块内存。Python缺省是在变量范围(variablescope)之外才释放一个变量,哪怕这个变量在后面的代码没有再被用到,所以需要手动释放大的array。
   注意所有对数组的引用都del之后,数组才会被del。这些引用包括A[2:]这样的view,即使np.split也只是创建了view,没有真的把内存分到不同的array里。
 
3. 矩阵点乘对角阵,用逐行乘可以快几十、几百倍:M.dot( diag(v) ) -> M*v。
 
4. 尽量重用内存。比如
    sqrtW = np.sqrt(W)
    (W以后再没有用到了)
    这样多了分配sqrtW内存的时间
   可以改写成 
    np.sqrt(W,W) # in placesqrt
    sqrtW = W # take auser-friendly name as its reference
    类似的
    A = B + C # B is neverused later
   可以改写成 
    B += C; A = B
 
4. 用 ipython 的 run -p prog.py 做profiling,找出耗时最多的语句。
   也可以实现简单的Timer类,打印出耗时流程使用的时间。
 
5. 把实际代码高度简化,只留下使用相同大小的内存和相同多的运算的skeleton,来事先评估算法的时间和空间复杂度。而且可以分块评估。比如
    …… complex and slowroutine to compute V11, Wsum, Gwmean ......
       for i in xrange(noncore_size):
           wi = Wsum[ i ]
           VW = V11.T* wi
           VWV =VW.dot(V11)
           V21[ i] =np.linalg.inv(VWV).dot( VW.dot(Gwmean[ i]) )
  可以写个test.py,用 np.random.randn() 随机初始化 V11,Wsum, Gwmean,然后执行这个代码块,看出大致所需内存和每个循环的时间,避免了执行之前漫长的计算这些变量的时间。
 
6.如果是windows,把windows自动安装更新的选项关掉。不然可能跑了一夜程序,收结果时一看,windows自动重启过了……哭

Python/Numpy大数据编程经验的更多相关文章

  1. 【Python开发】Python 适合大数据量的处理吗?

    Python 适合大数据量的处理吗? python 能处理数据库中百万行级的数据吗? 处理大规模数据时有那些常用的python库,他们有什么优缺点?适用范围如何? 需要澄清两点之后才可以比较全面的看这 ...

  2. 黑马基础阶段测试题:创建一个存储字符串的集合list,向list中添加以下字符串:”C++”、”Java”、” Python”、”大数据与云计算”。遍历集合,将长度小于5的字符串从集合中删除,删除成功后,打印集合中的所有元素

    package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...

  3. 为什么说Python 是大数据全栈式开发语言

    欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...

  4. python学习--大数据与科学计算第三方库简介

    大数据与科学计算  库名称 简介 pycuda/opencl GPU高性能并发计算 Pandas python实现的类似R语言的数据统计.分析平台.基于NumPy和Matplotlib开发的,主要用于 ...

  5. 菜鸟学python之大数据的初认识

    这次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2639 1.这些分析所采用数据来源是什么? 国家数据库:中国铁路 ...

  6. python模拟大数据登陆

    #针对tableu 撰写的大数据框架 #tesseract 识别简单的验证码 不多说  直接上代码 # coding:utf-8 from selenium import webdriver from ...

  7. Twitter数据挖掘:如何使用Python分析大数据

    我们可以创建变量来存放待拉取的微博数量(即count),以及待拉取的用户(即name).然后用这两个参数调用user_timeline()函数.下面是更新后的代码(注意,在代码的顶部应该保持认证和AP ...

  8. Twitter数据挖掘:如何使用Python分析大数据 (3)

    让我们来拉取Twitter账号@NyTimes的最近20条微博. 我们可以创建变量来存放待拉取的微博数量(即count),以及待拉取的用户(即name).然后用这两个参数调用user_timeline ...

  9. Python处理大数据

    起因 Python处理一下数据,大概有六七个G,然后再存到另外一个文件中,单线程跑起来发现太慢了,数据总量大概是千万行的级别,然后每秒钟只能处理不到20行--遂想怎么提高一下速度 尝试1-multip ...

随机推荐

  1. 带有可点击区域的图像映射:HTML <map> 标签

    实例 带有可点击区域的图像映射: <img src="planets.jpg" border="0" usemap="#planetmap&qu ...

  2. LC-检索

    line void LC(tree T,float cost) { //为找一个答案结点检索T if(T是答案结点) {输出T:return:} E=T: //E-结点 将活结点表初始化为空: ) { ...

  3. 你了解C语言中的关键字volatile吗?

    我们在学习C语言的32个关键字时,大家都不太注意volatile这个关键字,volatile是一个类型修饰符.volatile的中文意思是“易变的”.那么在程序中我们在什么情况下才使用他呢?我们在分析 ...

  4. JDK Tools - wsimport: 编译 WSDL 生成 JAX-WS 规范的 Java 类

    wsimport 命令是用来编译 wsdl 生成JAX-WS 规范的 Java 类的工具. 命令格式 wsimport [ options ] wsdl 命令参数 -s directory 指定源文件 ...

  5. Java - 使用 XSD 校验 XML

    package com.huey.dream.utils; import java.io.IOException; import java.io.InputStream; import javax.x ...

  6. 大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合

    http://www.aboutyun.com/thread-6855-1-1.html 个人观点:大数据我们都知道hadoop,但并不都是hadoop.我们该如何构建大数据库项目.对于离线处理,ha ...

  7. c#局域网文件搬移

    /// kongxiang--2013.7.23 /// using System;using System.Collections.Generic;using System.Linq;using S ...

  8. Agile.Net 组件式开发平台 - 开发环境部署

    环境准备: Windows 7 (32/64) Windows Server 2008 (32/64) Microsoft SQL Server 2008 R2 (32/64) Microsoft V ...

  9. eclipse中启动Genymotion模拟器的错误

    错误程序: Output file: C:\Users\wishwzp\.genymotion-eclipse.logLoading Genymotion libraryGenymotion dire ...

  10. Java架构必会几大技术点(转)

    关于学习架构,必须会的几点技术: 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注解 6. 设计模式 7. 代理机 ...