Linux 计划任务(at batch crontab anacron)

at 在未来只做一次任务调度,依赖于 atd 服务;batch 命令被用来在系统平均负载达到 0.8% 以下时执行一次性的任务;cron 在未来周期性的执行任务,依赖于 crond 服务;anacron 用于在开机时执行上次停机时没有完成的 crontab 任务,依赖于anacron服务。 at at 命令被用来在指定时间内调度一次性的任务,依赖于 atd 服务。其安装方式为 # debian apt-get install at # centos yum -y install at at 命令的选项与参数: -m :当 at 的任务完成后,即使没有输出信息,也以 email 通...

阅读更多

Python 缓存机制与 functools.lru_cache

缓存是一种将定量数据加以保存以备迎合后续获取需求的处理方式,旨在加快数据获取的速度。数据的生成过程可能需要经过计算,规整,远程获取等操作,如果是同一份数据需要多次使用,每次都重新生成会大大浪费时间。所以,如果将计算或者远程请求等操作获得的数据缓存下来,会加快后续的数据获取需求。 先来一个简单的例子以了解缓存机制的概念: # -*- coding: utf-8 -*- import random import datetime class MyCache: """缓存类""" def __init__(self): # 用字典结构以 kv 的形式缓...

阅读更多

Python 自省相关的内建函数和属性

见贤思齐焉,见不贤而内自省也。 --《论语·里仁》 刚开始听说 自省 这个概念的时候,我就在想这与孔子所说的自省是否是同一个概念。在计算机编程中,自省是指这种能力:检查某些事物以确定 它是什么、它知道什么以及它能做什么。我想老子锁说的自省(自我反省)无非也是要我们思考自己是什么,知道什么,能做什么,以取长补短,不断进步。Python 中自省(也叫内省)一种自我检查的行为,是在运行时确定对象的类型、属性等的能力。 这里简单列举和介绍 Python 自省相关的内建函数。 issubclass issubclass(sub, sup) 如果给出的子类 sub 确定是父类 s...

阅读更多

Git rebase 与 merge 的区别

git rebase 与 git merge 的区别在于,merge 会将不同分支的提交合并成一个新的节点,之前的提交分开显示;而 rebase 则是将两个分支的提交融合成一个线性的提交。 如下图所示,一个项目在 C2 时基于主分支创建了一个 experiment 分支,并做了一个 C3 版本的提交: 如果用 merge 命令合并,结果如下图: 如果用 rebase 命令合并,结果如下图: 单纯的从功能上来讲,Rebase 与 Merge 没有什么区别。但实际上,Rebase 更干净,因为提交历史最后会是线性的,但是 commit 不一定按日期先后排列,而是 loca...

阅读更多

通过安装 devtoolset 来体验更高版本的 gcc

Centos 5 默认的 gcc 版本为 4.1,某些软件在其上会编译不过,自己编译高版本的 gcc 可能也会遇到一些问题,比较麻烦。但有一个第三方库可以解决这个问题,即 devtoolset。devtoolset 有很多版本,例如 devtoolset-2(gcc-4.8.2)、devtoolset-3(gcc-4.9.2)、devtoolset-4(gcc-5.2.1)。 具体的安装步骤如下: 1、添加源并安装 wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolse...

阅读更多

Linux 后台进程管理利器 Supervisor

Supervisor 是基于 Python 的进程管理工具。其可方便我们启动守护进程,并对进程进行管理(启动、重启和停止进程,异常退出时还能能自动重启),此外还可以管理自定义的开机启动项。 安装 由于其基于 Python 开发,任何环境都可以通过 pip 安装: pip install supervisor 此外,Ubuntu 系统可用如下方式安装: apt-get install supervisor MacOSX 系统可通过如下方式安装: brew install supervisor 安装完成后会有如下几个命令工具 supervisord,Super...

阅读更多

开源包管理系统和环境管理系统 Conda

简介 在做 Python 开发时,或许你接触过 virtualenv,他可以为不同的环境安装不同的 Python 环境支持。如果你还知道 virtualenvwrapper,你会发现它用起来更加方便,它是对 virtualenv 的封装,可以很方便的创建和管理多个不同的开发环境。关于 virtualenv 和 virtualenvwrapper 的介绍可以参考以下内容: Linux下使用 virtualenv 虚拟独立 Python 环境 Python 多环境管理扩展 virtualenvwrapper 在 Python 中,还有一个更为强大的环境管理工具,即 Conda。Co...

阅读更多

Python 解释器环境变量

Python 即可以通过命令行参数,也可以通过环境变量来控制解释器执行代码的行为。命令行参数的优先级高于环境变量,即当环境变量与命令行参数冲突时,环境变量的配置失效。如果运行时指定 -E 参数,则所有环境变量的配置都会被忽略。 以下列举 CPython 实现版本支持的环境变量。 PYTHONHOME 指定 Python 标准库的路径。在默认情况下,Python 会查找 prefix/lib/pythonversion 和 exec_prefix/lib/pythonversion 作为标准库路径。其中 prefix 和 exec_prefix 由安装环境决定。 如果 PYTHON...

阅读更多