伴随着梦想前行

标签 python 下的文章

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

15/2
2019

pyspark使用自定义的python

出于种种原因,spark集群节点中的环境会不一致,会出现一些莫名其妙的错误,在没有root权限的情况下,可以使用自己配置好的python包分发到集群节点上使用;

比方说,本机是python2.7,节点是python2.6的错误:

Exception: Python in worker has different version 2.6 than that in driver 2.7, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
at org.apache.spark.api.python.BasePythonRunner$ReaderIterator.handlePythonException(PythonRunner.scala:298)

修改后的 /spark2.3/python/pyspark/shell.py,默认的脚本会用/spark2.3/conf/spark-env.sh覆盖自己设置的环境变量

export PYTHONSTARTUP="/data/src/shell.py"

本机调用的python环境

export PYSPARK_PYTHON=/data/python27_ml/bin/python2.7

不用python的shell,用jupyter做为交互环境

export PYSPARK_DRIVER_PYTHON=/data/python27_ml/bin/jupyter
export PYSPARK_DRIVER_PYTHON_OPTS="notebook --ip 0.0.0.0 --port 8888 --notebook-dir /data/notebook --config /data/src/notebook_config.json"

运行, /data/python27_ml.tgz是本地路径,要分发到节点上的python包

exec "${SPARK_HOME}"/bin/spark-submit \
pyspark-shell-main \
--name "PySparkShell" \
--conf "spark.yarn.dist.archives=/data/python27_ml.tgz" \
"$@"

/data/src/shell.py
需要在SparkContext初始化之前设置环境变量PYSPARK_PYTHON
os.environ['PYSPARK_PYTHON'] = './python27_ml.tgz/python27_ml/bin/python'

分发的python包找不到对应python可执行文件的错误:

19/02/15 14:55:43 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, 10.160.108.154, executor 9): java.io.IOException: Cannot run program "./python27/bin/python": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at org.apache.spark.api.python.PythonWorkerFactory.startDaemon(PythonWorkerFactory.scala:168)

+ MORE