当前位置:  编程技术>其它
本页文章导读:
    ▪Python与SQLite日期时间函数的使用          SQLite的时间函数跟Python的时间函数有些许差别,所以稍做记录,供自己以后查询。    网上有将SQLite官方WIKI内容翻译成中文的文章,大家有兴趣可以搜索一下,我这里.........
    ▪Python Tutorial(七):输入和输出      有几种方式来呈现程序的输出,数据可以以人类可读的形式打印,或者写到文件里面将来使用。本章我们将讨论这些可能性。7.1 输出格式到目前为止,我们遇到了两种方式来写值,表达式语.........
    ▪centos 上安装gearman      官网:http://gearman.org/跨多种环境部署 Gearman http://www.ibm.com/developerworks/cn/opensource/os-gearman/index.html 利用开源的Gearman框架构建分布式图片处理平台-张宴 http://blog.s135.com/dips/ 监控: https://github.c.........

[1]Python与SQLite日期时间函数的使用
    来源:    发布时间: 2013-11-15

    SQLite的时间函数跟Python的时间函数有些许差别,所以稍做记录,供自己以后查询。
    网上有将SQLite官方WIKI内容翻译成中文的文章,大家有兴趣可以搜索一下,我这里单纯记录一下个人比较常用的一些内容。

SQLite的五个时间函数:

date(日期时间字符串, 修正符, 修正符, ......)
time(日期时间字符串, 修正符, 修正符, ......)
datetime(日期时间字符串, 修正符, 修正符, ......)
julianday(日期时间字符串, 修正符, 修正符, ......)
strftime(日期时间格式, 日期时间字符串, 修正符, 修正符, ......)

 

date() 返回一个以"YYYY-MM-DD"为格式的日期;
time() 返回一个以"YYYY-MM-DD HH:MM:SS"为格式的日期时间;
datetime() 返回一个日期时间格式的对象;
julianday() 返回一个天数,从格林威治时间公元前4714年11月24号开始算起;
strftime() 返回一个经过格式化的日期时间。

 

例子一:计算当前时间
值得注意的是最好加上'localtime',只有一个'now'返回的是格林尼治时间。不然像我在东八区的话,时间会相差八小时。这里曾经让我误认为虚拟机的时间不同步。

1 sqlite> select datetime('now');
2 2013-01-07 05:21:07
3
4 sqlite> select datetime('now','localtime');
5 2013-01-07 13:21:09

 

例子二:计算当前月份最后一天
可以在修正符里面进行 年月日 的加减,但是 星期 不支持,返回的是空。

1 sqlite> select date('now','start of month','+1 month','-1 day');
2 2013-01-31
3
4 sqlite> select date('now','start of month','+1 month','-1 day','+1 year');
5 2014-01-31
6
7 sqlite> select date('now','start of month','+1 month','-1 day','+1 week');

 

例子三:计算两个日期相差的天数
当然罗,要是计算相差的小时,分钟或者秒,分别乘上12,60,60就能达到效果了。比如后面计算的是两个日期相差的小时。

1 sqlite> select julianday('now') - julianday('2012-12-22');
2 16.2240774538368
3
4 sqlite> select (julianday('now') - julianday('2012-12-22')) * 12;
5 194.796493470669

 

例子四:使用strftime对字符串进行日期格式化
注意要保证输入的字符串跟日期时间格式一致。

1 sqlite> select strftime('%Y-%m-%d','2013-01-10');
2 2013-01-10
3
4 sqlite> select strftime('%Y-%m-%d','2013-1-1');
5
6 sqlite> select strftime('%Y-%m-%d','2013,1,1');

在Python中使用从SQLite获取的datetime对象
  &n

    
[2]Python Tutorial(七):输入和输出
    来源:    发布时间: 2013-11-15

有几种方式来呈现程序的输出,数据可以以人类可读的形式打印,或者写到文件里面将来使用。本章我们将讨论这些可能性。

7.1 输出格式

到目前为止,我们遇到了两种方式来写值,表达式语句和print()函数。(第三种方式是用文件对象的write()方法,标准的输出文件可以被引用为sys.stdout)

通常你希望对输出格式有更多的控制而不是简单的以空格分隔进行打印。有两种方式来格式化输出;第一种方式是所有的字符串处理都自己做;使用字符串的切片和链接操作可以创建出你想象的任何布局。字符串类型有一些方法可以执行有用的操作把字符串填充到指定的列宽。第二种方式是使用str.format()方法。

string模块包含一个模板类提供另一种方式把值替换到字符串里面。

当然,还有一个问题,怎样把值转化为字符串,幸运的,Python有方式可以把任何值转化为字符串,把这个值传递到repr()或者str()函数。

str()函数的目的是以人类可读的形式返回值的表示形式。repr()函数的目的是产生一个解释器可读的表示形式(或者将强制产生一个语法错误如果没有相等的语法)。对于那些对人类没有特别表示形式的对象,str()将返回repr()的值。许多值,像数字或列表和字典结构,对于任何一个函数返回同样的表示。字符串,特殊情况下,有两个不同的表示。一些示例:

下面是两种方式来写一个平方和立方的表:

注意在第一个示例里,每一列直接都加入了一个空格,通过print()的工作方式,它总是在它的参数之间加入空格。

这个示例演示了字符串对象的str.rjust()方法,它把字段右对齐并通过在左边填充空格达到指定的宽度。有些相似的方法str.ljust()和str.center()。这些方法不写任何东西,它们仅仅返回一个新的字符串。如果输入字符串太长,并不截断字符串,直接返回它,这样会搅乱你的列布局,但是通常比其他的方法更好。其它情况值可能被截断了。(如果你真想截断的话,可以加一个切片操作符,x.ljust(n)[:n])

有另外一个方法,str.zfill(),它在字符串的左边添加零,它能够理解正负号:

str.format()方法的基本使用像这样:

花括号和它里面的字符(叫做格式字段)被传入str.format()方法里面的对象替换,花括号里面的数字可以用来引用传入str.format()方法里面的对象的位置:

如果str.format()方法里面使用了关键字参数,可以使用这些参数的名字来引用它们的值:

位置参数和关键字参数可以被任意结合:

!a(应用ascii())!s(应用str())!r(应用repr())可以用来在格式化前转换值:

一个可选的:和格式化指示符可以跟在字段名字的后面,这允许在如何格式化值上面有更大的控制。下面的示例圆周率Pi保留三位小数:

在:后面传一个整数使那个字段具有最小整数的字符宽度。这可以使表格变得漂亮:

如果你有一个很长的格式化字符串并且你不想把它分开,较好的方法是使用名字而不是位置来引用被格式化的变量。这可以简单的通过传一个字典和使用方括号访问键值来实现:

这也可以使用**把字典当作关键字参数来实现:

这是特别有用的,当结合内建函数vars(),它返回一个包含所有本地变量的字典。

7.1.1 旧的字符串格式化

%操作符也可以用来进行字符串格式化。它解释左边的参数(必须像一个sprintf()样式的格式字符串)被应用于右边的参数,从这个格式化操作返回字符串结果。例如:

因为str.format()非常新,许多Python代码仍然使用%操作符,然而,旧的格式化样式最终将从语言中删除,str.format()应该被广泛使用。

7.2 读写文件

open()返回一个文件对象,通常使用两个参数,open(filename, mode):

第一个参数是一个字符串包含文件名字,第二个参数是另一个字符串包含几个字符描述文件将被使用的方式。方式可以是r当文件被只读时,w是只写(已经存在的同名文件将被擦除),a是打开文件进行追加,任何写入文件的数据自动的加到最后面。r+打开文件可以读写,方式参数是可选的,如果忽略的话就假定是r。

通常,文件以文本模式打开,这意味着,从文件里读出和写入字符串,被一个指定的编码进行编码(默认是UTF-8)。b追加到方式后面以二进制的模式打开文件,数据的读出和写入都以字节对象的形式。这种模式用于所有的不包含文本的文件。

在文本模式,默认的是,在读的时候把平台特定的行结束(Unix是\n,Windows是\r\n)符转换为\n,在写的时候把\n转换为平台特定的行结束符。这种幕后的文件数据修改对于文本文件是没问题的,但是将会破坏二进制数据像JPEG或EXE文件。当读写这样的文件时要慎用二进制模式。

7.2.1 文件对象的方法

这个部分接下类的示例,将假定有一个叫f的文件对象已经被创建。

读一个文件的内容,调用f.read(size),它读一定数量的数据,并以字符串或字节对象的形式返回。size是一个可选的数字参数。当size被忽略或是负数时,整个文件的内容会被读出并返回。如果文件的大小是你机器内存的两倍,那就是你的问题。否则,最多的字节被读出并返回。如果达到了文件的末尾,f.read()将返回一个空字符串:

f.readline()从文件中读出一行,换行字符\n被留在了字符串的末尾,只有在文件的最后一行时会被忽略,前提是文件不是以一个新行结束。这使得返回值非常清晰明白,如果f.readline()返回一个空字符串,表明文件的末尾已经达到,同时,一个空白行被表示为一个\n,只包含一个换行符的字符串:

f.readlines()返回一个列表,包含文件里面所有的数据行。如果给定一个可选的参数sizehint,从文件里读取很多的字节,足够多的来完成一行,并且返回这些行。这通常允许有效的以行的形式来读取一个大文件,而不用把整个文件加载到内存里。只有完成的行会被返回:

一个可选的方式来读取行是循环一个文件对象。这样可以是内存有效,快速,并且代码更简单:

这个可选的方式比较简单,但是不提供细粒度的控制。因为两种方式管理行的缓存不同,它们不能被混合在一起。

f.write(string)把字符串的内容写入文件,返回写入字符的数目:

要写入一些不是字符串的东西,需要先转化为字符串:

f.tell()返回一个整数给出文件对象在文件中的位置,从文件的开头以字节数目来衡量。要改变文件对象的位置,使用f.seek(offset, from_what)。这个位置是在一个参考点加上偏移量算出来的,参考点是用from_what参数来选择的。0表示从文件开头,1表示当前位置,2表示文件的末尾作为参考点。它可以被忽

    
[3]centos 上安装gearman
    来源:    发布时间: 2013-11-15
官网:http://gearman.org/

跨多种环境部署 Gearman
http://www.ibm.com/developerworks/cn/opensource/os-gearman/index.html
利用开源的Gearman框架构建分布式图片处理平台-张宴
http://blog.s135.com/dips/
监控:
https://github.com/yugene/Gearman-Monitor

一、简介
Gearman是一个分发任务的程序架构,由三部分组成:
Gearman client:提供gearman client API给应用程序调用。API可以使用C,PHP,PERL,MYSQL UDF等待呢个语言,它是请求的发起者。
Gearman job server:将客户端的请求分发到各个gearman worker的调度者,相当于中央控制器,但它不处理具体业务逻辑。
Gearman worker:提供gearman worker API给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。
Mogilefs的分布式文件系统的核心就是用gearman实现的。
这个软件的应用场景很多,比如视频网站的视频处理,分布式日志处理,电子邮件处理,文件同步处理,图片处理等等,只要是可以放开,不影响体验和响应的场 景,需要并行进行大量计算和处理的程序都是可以的。Yahoo在60或更多的服务器上使用gearman每天处理600万个作业。新闻聚合器digg构建 了一个相同规模的gearman网络,每天可处理400000个作业。
Gearman不但可以做为任务分发,还可以做为应用方面的负载均衡。可以让worker放在不同的一堆服务器上,也可以启动放在同一个cpu的多个核 上。比如,应用视频转换程序,不希望web服务器来处理视频格式转换,这时,可以在这一堆服务器上进行任务分发,在上面加载worker处理视频格式,对 外的web服务器就不会被视频转换过程影响。而且扩展方便,加一台服务器到任务调度中心,注册成worker即可,这时job server会在请求到来的时候,将请求发送给空闲的worker。还可以运行多个job server,组成ha架构,如果一个job server当掉了,client和worker会自动迁移到另一台job server上。

二、安装
[Job Server (gearmand) -- 172.16.1.183]
1.首先安装libdrizzle
    #yum install libdrizzle libdrizzle-devel
2.安装gearman(两种方法1.yum2.源码包)。(c版的server)
    1)yum安装
    #rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm
    #yum install -y gearmand
    2)源码包安装
    #cd /opt/build/
    #wget https://launchpad.net/gearmand/trunk/0.34/+download/gearmand-0.34.tar.gz
    #tar zxf gearmand-0.34.tar.gz
    #cd gearmand-0.34
    #./configure
    #make && make install
3.启动gearman服务
    1)yum安装方式
    #/etc/init.d/gearmand start
    2)源码包安装方式
    #/opt/build/gearmand-0.34/sbin/gearmand -d

    #gearmand -vvv -u root
    INFO Starting up
    INFO Listening on :::4730 (6)
    INFO Creating wakeup pipe
    INFO Creating IO thread wakeup pipe
    INFO Adding event for listening socket (6)
    INFO Adding event for wakeup pipe
    INFO Entering main event loop

worker&&client以php方式
[worker --  172.16.1.180]
安装gearmand如上所示

安装 Gearman PHP extension
1.下载gearman-0.8.0.tgz并安装
    #cd /opt/build/
    #wget http://pecl.php.net/get/gearman-0.8.0.tgz
    # yum install -y libgearman-devel.x86_64
    # yum install -y re2c
    #tar zxf gearman-0.8.0.tgz
    #cd gearman-0.8.0.tgz
    #phpize
    # ./configure
    # make && make install
2.编辑php.ini配置文件加载相应模块并使之生效
    # vim /etc/php.ini
    extension = "gearman.so"
3.查看gearman.so模块是否加载
    # php --info | grep gearman
    gearman
    gearman support => enabled
    libgearman version => 0.14
    PWD => /opt/build/gearman-0.8.0
    _SERVER["PWD"] => /opt/build/gearman-0.8.0
    # php -m | grep gearman
    gearman
4.启动job
gearmand -d
如果当前用户是 root 的话,则需要这样操作:
gearmand -d -u root
缺省会使用 4730 端口,下面会用到。
    注意:如果找不到 gearmand 命令的路径,别忘了用 whereis gearmand 确认

[client -- 172.16.1.181]
    安装如work同。如上所示。

三、测试:
[Job Server (gearmand) -- 172.16.1.183]
启动gearmand

以命令行工具来验证gearman的功能
启动 Worker:gearman -h 172.16.1.183 -w -f wc -- wc -l &
运行Client:gearman -h 172.16.1.183 -f wc < /etc/passwd
42
可以看到验证成功。

以php验证gearman的功能
编写 Worker
worker.php 文件内容如下:
<?php
$worker= new GearmanWorker();
$worker->addServer('172.16.1.183', 4730);
$worker->addFunction('reverse', 'my_reverse_function');
while ($worker->work());
function my_reverse_function($job) {
return strrev($job->workload());
}
?>
设置后台运行 work
php worker.php &
编写 Client
client.php 文件内容如下:
<?php
$client= new GearmanClient();
$client->addServer('172.16.1.183', 4730);
echo $client->do('reverse', 'Hello World!'), "\n";
?>
运行 client
php client.php
输出:!dlroW olleH


小果子 2013-01-07 16:39 发表评论

    
最新技术文章:
▪修改月光博客网站中PHP常用正则表达式中出现...
▪js正则判断非法字符限制输入
▪通过正则表达式删除空行的方法
▪一个好用的正则匹配电话号手机号邮箱网址的...
▪JS 正则表达式用法介绍
▪几个小例子教你如何实现正则表达式highlight高...
▪如何实现正则表达式的JavaScript的代码高亮
▪js 玩转正则表达式之语法高亮
▪PHP中过滤常用标签的正则表达式
▪js 正则表达式学习笔记之匹配字符串
▪使用正则表达式匹配[***]样式的字符串
▪史上最详细的js日期正则表达式分享
▪php+正则将字符串中的字母数字和中文分割
▪正则表达式不区分大小写以及解决思路的探索...
▪正则替换换行符和把 br 替换成换行符
▪正则表达式匹配不包含某些字符串的技巧
▪匹配form表单中所有内容的正则表达式
▪正则表达式(括号)、[中括号]、{大括号}的区别...
▪正则表达式中的"g"是什么意思附件参数g的用...
▪浅谈正则表达式(Regular Expression)
▪Python正则表达式的七个使用范例详解
▪正则表达式提取img的src
▪常用的正则表达式集锦
▪使用正则表达式找出不包含特定字符串的条目...
▪js正则表达式中的问号几种用法小结
▪正则表达式概述 什么是正则表达式 .
▪ajax对注册名进行验证检测是否存在于数据库...
▪js正则解析URL参数示例代码
▪JS使用正则去除字符串最后的逗号
▪几种常见攻击的正则表达式
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3