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. JavaScript高级程序设计(第三版)学习笔记13、14章

    第13章,事件 事件冒泡 IE的事件叫做事件冒泡:由具体到不具体 <!DOCTYPE html> <html> <head>      <title>E ...

  2. C# 编写短信发送Window服务

    我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就 ...

  3. C语言对文件的相关命令

    fopen(文件名,使用文件的方式):打开数据文件 fclose(FILE *fp):关闭数据文件 feof(FILE *fp):是判断是否到fp的结尾 fputc(char ch,FILE *fp) ...

  4. 对象创建型模式------Singleton(单例模式)

    地址:http://blog.csdn.net/wuzhekai1985/article/details/6665869.仅供自己参考学习. 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局节 ...

  5. UIButton关于setFont方法过时的解决方法

    环境:xcode7 语言:Object-c 解决方法:更改UIButton的titleLabel属性的font值 一.新建一个Single View Application项目 二.创建一个UIBut ...

  6. javascript 第26节 jQuery对象

    <html> <head> <title>jQuery</title> <!--导入jquery库--> <script type=& ...

  7. javascript 事件 第23节

    <html> <head> <title>DOM对象</title> <style type="text/css"> t ...

  8. [leetcode] 400. Nth Digit

    https://leetcode.com/contest/5/problems/nth-digit/ 刚开始看不懂题意,后来才理解是这个序列连起来的,看一下第几位是几.然后就是数,1位数几个,2位数几 ...

  9. sql的集合操作

    原文转自:http://blog.csdn.net/qsyzb/article/details/12560917 SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作. ...

  10. css部分基础归纳--学习笔记

    (1)css不区别大小写: (2)颜色值:颜色值可以写成RGB格式,如:color:rgb(255,100,0),也可以写成十六进制格式,如:color:#ff0000.如果十六进制的值是成对重复的可 ...