伴随着梦想前行
15/6
2021

python代码分析工具

Scalene:简洁的内存 / CPU/GPU 分析器

首先要讨论的是 Scalene,它是一个 Python 的高性能 CPU 和内存分析器,由马萨诸塞大学研发。其 GitHub 页面是这样介绍的:「 Scalene 是适用于 Python 的高性能 CPU、GPU 和内存分析器,它可以执行许多其他 Python 分析器无法做到的事情,提供详细信息比其他分析器快几个数量级。」

安装

它是一个 Python 包,所以按照通常方法安装:

pip install scalene

这样适用于 Linux OS,作者没有在 Windows 10 上进行测试。

在 CLI 或 Jupyter Notebook 内部使用

Scalene 的使用非常简单:

scalene

也可以使用魔术命令在 Jupyter notebook 中使用它

+ MORE

30/12
2020

php兼容gz格式数据

function gzuncompress_crc32($data) {
file_put_contents('/tmp/abc.gz', "\x1f\x8b\x08\x00\x00\x00\x00\x00" . $data);
$res = file_get_contents('compress.zlib:///tmp/abc.gz');
return $res;
}

+ MORE

22/10
2019

shell脚本实现的多进程管理

#mgr.sh
#!/bin/bash

base_dir=$(cd dirname "$0" && pwd)

TASK_COUNT=24
MUTEX_FILE=${base_dir}/count.mutex
BIN=/usr/bin/php

function maybe_wait() {
    while :
    do
        cnt=lsof ${MUTEX_FILE} | awk '$1=="sh"' | wc -l
        echo "LIMIT_TASK_COUNT: $TASK_COUNT, CURRENT: $cnt"
        if (( $cnt < $TASK_COUNT )); then
            break
        fi
        sleep 10
    done
}

for day in cat ${base_dir}/days.list
do
    echo "wait: $day, $hour"
    maybe_wait

    sh ${base_dir}/task.sh ${day} &> ${base_dir}/logs/${day}.log &
done
#task.sh
#!/bin/bash

base_dir=$(cd dirname "$0" && pwd)

MUTEX_FILE=
exec 7<>${MUTEX_FILE} 

if (( 1 > $# )); then
    echo $0 yyyy-mm-dd
    exit
fi

day=$1

echo $day

+ MORE

23/8
2019

word embedding

概念

基于神经网络的分布表示又称为词向量、词嵌入,神经网络词向量模型与其它分布表示方法一样,均基于分布假说,核心依然是上下文的表示以及上下文与目标词之间的关系的建模。
前面提到过,为了选择一种模型刻画某个词(下文称“目标词”)与其上下文之间的关系,我们需要在词向量中capture到一个词的上下文信息。同时,上面我们恰巧提到了统计语言模型正好具有捕捉上下文信息的能力。那么构建上下文与目标词之间的关系,最自然的一种思路就是使用语言模型。从历史上看,早期的词向量只是神经网络语言模型的副产品。
2001年, Bengio 等人正式提出神经网络语言模型( Neural Network Language Model ,NNLM),该模型在学习语言模型的同时,也得到了词向量。所以请注意一点:词向量可以认为是神经网络训练语言模型的副产品。

理解

前面提过,one-hot表示法具有维度过大的缺点,那么现在将vector做一些改进:1、将vector每一个元素由整形改为浮点型,变为整个实数范围的表示;2、将原来稀疏的巨大维度压缩嵌入到一个更小维度的空间。
这也是词向量又名词嵌入的缘由了。

+ MORE