5月 08

raspberry pi上测试pypy效果

PyPy 2.0 alpha for ARM 发布

官方网页
http://pypy.org/download.html

有专门针对raspberry pi的版本。来简单做个测试。
我这竟还要翻墙下回来。
安装很顺利。
$sudo dpkg -i pypy-upstream_2.0~alpha+arm_armhf.deb

开始测试一下效果,直接到oschina拷贝“ruby太慢的”python版测试一下。

import time
start=time.time()
all=xrange(1,10**7)
def check(num):
    a=list(str(num))
    b=a[::-1]
    if a==b:
        return True
    return False
for i in all:
    if check(i):
        if check(i**2):
            print i,i**2
 
end=time.time()
print end-start

开始测试
直接用python测试
time python test.py
。。。

real 8m13.570s
user 8m3.490s
sys 0m0.560s

使用pypy测试
time pypy test.py
。。。

real 1m45.521s
user 1m44.230s
sys 0m0.150s

结论使用pypy处理运算速度比python高出差不多7倍的效果。

12月 11

raspberry pi 自动初始化脚本

  玩了几天,打算刷一下。但是很多要升级也挺麻烦,直接写了个脚本,自动升级。大家如果还有自己需要的,也可以自行添加,这样初始就方便多了。
  先修改成亚洲的源
$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
$ sudo vi /etc/apt/sources.list
deb http://mirror.nus.edu.sg/raspbian/raspbian wheezy main contrib non-free rpi
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi

  如果直接用我的脚本命令如下:
$ wget http://www.simonzhang.net/wp-content/uploads/2012/12/pisystemupdate.py_.gz
$ gunzip pisystemupdate.py_.gz ;chmod a+x pisystemupdate.py_;python pisystemupdate.py_
不知道为什么加了个尾巴

  脚本内容如下:

#!/bin/env python
# -*- coding:utf-8 -*-
# Revision:
# Date:        2012-12-10
# Author:      simonzhang
# Email:       simon-zzm@163.com
# Web:         www.simonzhang.net
# -------------------------------
import os
import time

def SystemUpdate():   #系统升级
    try:
        os.system('sudo apt-get -y update')
        _get = 'ok'
    except:
        _get = 'ERROR'
    return _get

def Timing():   #校时
    try:
        os.system('sudo cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime')
        os.system('sudo apt-get install -y ntpdate')
        os.system('sudo /usr/sbin/ntpdate stdtime.gov.hk')
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get


def Vncserver():    #远程桌面
    try:
        os.system('sudo apt-get install -y tightvncserver') 
        _get = 'ok'
    except:
        _get = 'ERROR'
    return _get


def DevelopTool():    #开发工具
    try:
        os.system('sudo apt-get install -y gcc make')
        _get = 'ok'
    except:
        _get = 'ERROR'
    return _get

def SystemTools():    #系统常用工具
    try:
        os.system('sudo apt-get install -y bison gawk vim chkconfig') 
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get


def PythonTools():   #python 管理工具
    try:
        os.system('wget -q http://peak.telecommunity.com/dist/ez_setup.py')
        os.system('sudo python ez_setup.py')
        os.system('sudo easy_install pygame')
        _get = 'ok'
    except:
        _get = 'ERROR'
    return _get

	
def PythonImage():    #python的图片处理
    try:
	os.system('sudo apt-get install -y libjpeg*-dev')
	os.system('sudo apt-get install -y python-imaging') 
	os.system('sudo apt-get install -y python-dev')
	os.system('sudo easy_install tornado PIL')
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get


def PythonFrame():    #python框架
    try:
        os.system('sudo easy_install tornado Django')
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get

def OpenCV():   #摄像头
    try:
        os.system('sudo apt-get install -y python-opencv')
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get


def InstallMysql():   #数据库,密码为pi
    try:
	os.system('sudo debconf-set-selections <<< \'mysql-server-5.5 mysql-server/root_password password pi\'')
	os.system('sudo debconf-set-selections <<< \'mysql-server-5.5 mysql-server/root_password_again password pi\'')
	os.system('sudo apt-get -y install mysql-server')
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get


def Installjava():   #java环境
    try:
	os.system('sudo apt-get install -y openjdk-7-jdk')
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get

def ChineseFont():   #中文字体
    try:
	os.system('sudo apt-get install -y ttf-wqy-microhei')
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get
	
def InputMethod():   #输入法
    try:
	os.system('sudo apt-get install -y scim scim-pinyin')
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get

	
def AudioDriver():   #音频
    try:
        os.system('sudo apt-get install -y alsa-utils')
        os.system('sudo modprobe snd_bcm2835')
	_get = 'ok'
    except:
        _get = 'ERROR'
    return _get

	
def main():
    install_list = [SystemUpdate, \
                    Timing, \
                    Vncserver, \
                    DevelopTool, \
                    SystemTools, \
                    PythonTools, \
                    PythonImage, \
                    PythonFrame, \
                    OpenCV, \
                    InstallMysql, \
                    Installjava, \
                    ChineseFont, \
                    InputMethod,  \
                    AudioDriver, \
                    SystemUpdate,
                   ]
    for il in install_list:
        print '*' * 50
        print ': %s start' % il
        print '*' * 50
        install_status = il()
        nt = time.localtime()
        log_time = "%s-%s-%s %s:%s:%s" % (nt[2], nt[2], nt[3], nt[4], nt[5], nt[6])
        log_file = open("pi_install.log", "ab")
        log_file.write("%s %s install %s\n" % (log_time, il, install_status))
        log_file.close()
    os.system('sudo apt-get upgrade -y')
    print "Install all end."


if __name__ == '__main__':
    main()

pisystemupdate.py