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. 关于运行SWT程序遇到的一个错误的总结

    具体的错误信息如下: Exception in thread "main" java.lang.SecurityException: SHA1 digest error for o ...

  2. RGBa颜色 css3的Alpha通道支持

    CSS3中,RGBa 为颜色声明添加Alpha通道. RGB值被指定使用3个8位无符号整数(0 – 255)并分别代表红色.蓝色.和绿色.增加的一个alpha通道并不是一个颜色通道——它只是用来指定除 ...

  3. mysql计算连续天数,mysql连续登录天数,连续天数统计

    mysql计算连续天数,mysql连续登录天数,连续天数统计 >>>>>>>>>>>>>>>>>& ...

  4. hasLayout与Block formatting contexts的学习(上)

    hasLayout与Block formatting contexts的学习 @(css BFC)[IE hasLayout|妙瞳] hasLayout是什么? haslayout 是Windows ...

  5. 再跟SQL谈一谈--高级篇(一)

    1.SELECT KEYWORD ①TOP ②LIKE ③IN ④BETWEEN...AND ⑤ALIAS 2.SELECT JOIN ①JOIN | INNER JOIN ②LEFT JOIN ③R ...

  6. c/c++中const使用总结(金典)

    原文地址:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html 个人总结:          (1)const只对它左 ...

  7. Web应用程序安全必须重视八大问题

    摘自:http://netsecurity.51cto.com/art/201402/428709.htm 对于任何一个项目,开始阶段对于交付安全的应用来说非常关键.适当的安全要求会导致正确的安全设计 ...

  8. java培训(1-4节课)

    课程安排:JavaEE方向(控制台程序,GUI程序,Web程序,手机程序)(dos命令是控制台程序:QQ是GUI程序,放在计算机上:QQ空间是Web程序,放在腾讯公司) 讲课的13本教材:C语言,Ja ...

  9. SQL 不同的数据类型

    SQL 不同的数据类型 1.SQL TEXT 2.SQL VARCHAR(SIZE) VARCHAR(X) Case: user name, email, country, subject, pass ...

  10. mybatis学习(一)一个在idea下的实例

    今天总结的是mybatis,首先说mybatis是什么? MyBatis 是一个简化和实现了 Java 数据持久化层(persistence layer)的开源框架,它抽象了大量的 JDBC 冗余代 ...