- 博客(23)
- 收藏
- 关注
原创 python中的参数修改问题
python中对象全都是引用。函数参数的都是指针常量 T * const ,也就是本身指向的位置不可改,但是其指向的位置中的内容可以改。def tf1(a): a = 10t = 0tf1(t)print(t) # 没变,0def tf2(a): a = "abc"t = "123"tf2(t)print(t) # 没变,123def tf3(a): a.append(10)t = []tf3(t)print(t) # 变了[10].
2020-08-15 15:05:59 504
原创 tensorflow中Dataset读数性能测试
首先我们随机生成一批数据文件;可以看到我们总共生成了500万条数,均匀分到20个文件中,全部数据大约220M。现在,我们用python中标准的文件读取方式读入数据,测试结果如下:读入仅仅只需3秒。我们接着重复读10次:耗时31.6秒,大约是单遍读取时间的10倍。接着我们用tensorflow的dataset试试看,测试结果如下:可以看到耗时8秒。下面...
2019-02-25 10:40:02 556
原创 Tensorflow与numpy的兼容
numpy中的数据类型跟tensorflow中的数据类型是完全兼的。numpy 的 array 可以直接传递给 tf 的 Operation。tf 的 tensor 也可以直接当做 numpy 的 array,相应的运算自动纳入tf 的 graph。...
2019-02-25 10:30:21 6744
原创 CPU与GPU计算耗时对比
下面我们测试了分别使用CPU和GPU执行矩阵乘法得到的耗时差异:运行结果如下:注意,上面的运行揭示了下面几点:cpu_c的第一次计算耗时明显超过后面的3次。 gpu_c的第一次计算耗时明显大大超过后面3次。 GPU运行耗时差不多是CPU的1/10。...
2019-02-25 10:26:17 4036 1
转载 python可变参数练习
下面的练习参考了http://kodango.com/variable-arguments-in-python# -*- coding: utf8 -*-# 可变参数练习#*args是表示一个不定长的序列#**kwargs表示一组不定长度k=v的pairdef test1(first, *args, **kwargs): print 'Required argument: ',
2017-05-18 15:27:37 590
原创 pig使用的一些注意事项
1.利用python做udf时,python的list对应pig的bag。2.宏里面对参数和返回值的引用任何时候总是带$。3.不要让int和long进行比较因为 java.lang.Long cannot be cast to java.lang.Integer4.使用pig python udf的时候,不要在python里面定义很大的map或者list,可以写成字符串然后用
2016-07-19 10:02:32 638
原创 scala中使用protobuf
最近一个项目中,需要在spark中解析protobuf编码过的数据。 针对这个问题,我首先试了一下在scala中解析protobuf编码后数据的功能,下面记录了详细过程 1.书写proto文件 2.编译proto文件,获取java类文件 3.把刚刚得到java类文件拷贝maven工程目录下,注意目录结果和package一致 4.修改m
2016-05-31 20:11:46 10321
原创 spark任务读取资源文件示例
我遇到下面的问题:给定一批ID,大约几万个,然后去日志里面把包含他们的记录捞出来.我们很自然想到的解决方法是:把这些ID写入一个文件,spark任务先读出这个文件的内容,然后再把内容广播到每个工作节点。这样做的话,我们有两个选择,一是把ID写入一个HDFS文件,spark任务读出并广播,然而这种做法需要把HDFS文件的路径写死在代码里,万一不小心删除或者移动了文件,spark任务就会失
2016-05-26 18:10:11 5712
原创 scala的option使用实例
下面是option的一个小练习,直接上代码:import scala.collection.mutable.ArrayBufferobject OptionTest { def main(args: Array[String]) { val tmp1 = Option(Array(1,2)) val tmp2 = Option(None) case
2016-05-25 21:27:45 767
原创 c++下可调对象作为参数的实现
想做一个函数,他的参数是可调对象,当然可调对象既可以是函数指针,也可以是仿函数,lambda表达式。下面演示了,如何做到这一点。#include#include #includeusing namespace std;void print(int x){ cout<<"正常的函数:"<<x<<endl; }class F{public: void operator()(
2016-03-08 17:48:56 377
原创 智能指针下的多态
想不到,智能指针也可以实现运行多态,。下面展示了个小例子。#include#includeusing namespace std;class P{public: P() { cout<<"P construction"<<endl; } virtual void f(int t) { cout <<"P!!"<<",t="<<t<<endl; } ~P() { cout
2016-03-05 22:03:16 2475
原创 python中利用exec动态创建函数
# -*- coding: utf-8 -*- import timeimport datetimeimport osimport sys def defFunciton(temp_namepace): '''在命名空间 temp_namepace中定义两个函数''' function_str = '''def GET(str1): return str1 + "GET_tes
2016-01-09 19:41:11 3655
原创 用智能指针管理容器及内存紧凑
做了一个小练习,包括用智能指针去管理容器,容器的内存紧凑化问题,以及智能指针资源的复制与释放,希望对大家有参考价值。#include #include #include #include using namespace std;class Point{public: Point(int a):m_a(a) { } Point(const Point& p)
2015-08-03 10:20:34 672
原创 区间树中区间重叠检测算法正确性的证明
最近遇到一个版本区间冲检测问题,这个问题描述如下: 给定一个版本区间[x,y],试问他是否与一个版本区间集合中的区间有重叠。在网上收集了一下相关资料,发现一个叫区间树的数据结构,网址 http://www.geeksforgeeks.org/interval-tree/ 对其有一个简单的介绍。首先在这里简单介绍下区间树:区间树每个节点按区间的左端点(所以区间的左端点
2015-04-26 19:13:38 1141
原创 Windows下Python科学计算的环境搭建
1.安装python,下载网址https://www.python.org/downloads/ 这个过程中遇到的问题可以参考别的网络资料。 2.安装NumPy.下载windows下面适合的包并双击安装即可。 运行一个例子 表明安装成功 3.安装matplotlib 下载点击安装
2015-04-12 22:38:15 627
原创 服务器性能调优-菜鸟初尝试
有时间后台服务会遇到cpu消耗过高的问题,这个时候需要找出到代码中导致高消耗的函数调用,予以优化。下面举个最简单的例子。 1.发现目标进程cpu过于繁忙并且VIRT值过大。 VIRT过大是因为目标进程attach了一块很大的共享内存,所以不是问题。但是cpu消耗有点大,现在每分钟包量不足13W,那么大约30W就会把cpu撑满,而我们服务器通常每分钟可以处理
2015-04-11 16:04:24 1914 1
原创 用killall -0监控服务的注意事项
后台服务需要不间断运行,意外退出后,需要将其重新拉起。常常可以通过向进程发送信号0,然后根据返回值来判断一个进程是否存在。比如进程名字为A,那么exsit="killall -0 A;echo $?"exsit为0就表示进程A存在,否则表示不存在。然而,当有多个进程名字都是A的时候,只有在全部名字为A的进程都退出后,exsit才非0,所以这种监控方法并不太适合多进程环境(为了负载均衡,
2015-03-22 10:08:07 12412
原创 python脚本中启动另一个python脚本
有时间,我们需要在一个python脚本中调起另一个python脚本,下面我尝试了一下, 1.子脚本#coding:utf8#!/usr/local/bin/pythonimport timeimport datetimeimport osimport sys import tracebackimport threadingimport subprocess
2015-03-16 10:23:38 7036
原创 stringstream与snprintf性能对比测试
最近发现服务中存在大量stringstream对象的创建,导致性能低下,于是对stringstream心生敬畏了,特地做了一下他和snprintf的性能比较测试实验,分别考察了下面四种选择在多线程环境下的执行时间: 1.循环中每次构建新的stringstream对象 2.循环中每次重用一个stringstream对象,重用前清空 3.循环中每次创建一个局部buf
2015-03-13 14:49:35 5463 2
原创 K-means聚类算法及其改进家族简介
k-means家族算法中用的较多的有:k-means ,k-medoids,k-medians ,k-means++,k-modes,k-prototype 他们各自的简单介绍为:k-means:最小化下面的目标函授 也就是将点集分成K个类,首选选择初始的K个质心,和K个类对应,然后
2015-03-12 13:43:03 1395
原创 Python中用os.walk 遍历目录
一颗目录树中每个节点都是一个目录,那么他的儿子节点中有的是目录,有的是文件。给定目录树的根节点的路径,Os.walk会按照深度优先遍历算法遍历这颗子目录树。每遍历到一个这颗子目录树的节点,也就是一个文件夹,他会返回三元tupple(dirpath, dirnames, filenames): 当前遍历到的文件夹的绝对路径,dirpath 当前文件夹下的子文件夹的
2015-03-05 13:12:15 3501
原创 用长度为0的数组管理共享内存
gnu支持长度为0的数组,一般用来表示结构体或者类的最后一个数据成员,这样的数据成员不占任何空间并指向所在结构体或者类对象的下一个字节.下面示例代码显示了通过共享内存管理两块数据空间,每个数据由一个DataMgr来管理,而DataMgr中的data这个成员正式一个长度为0的数组,他指向了数据空间的首地址。
2015-03-05 09:53:43 597
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人