例行程序
def routine():
    lastday = ''
    while True:
        day = datetime.datetime.now().strftime("%Y%m%d")
        hour = int(datetime.datetime.now().strftime("%H"))
        if day != lastday and hour == 6: # exec when 6 a.m.
            cur_date = datetime.datetime.now() - datetime.timedelta(days=1)
            cal_date_str = (cur_date).strftime('%Y%m%d')
            run_job(cal_date_str)
            lastday = day
        time.sleep(600)
    exit(0)
 
if __name__ == '__main__':
    if len(sys.argv) < 2:
        exit(0)
 
    if sys.argv[1] == 'routine':
        routine()
 
ngram
用法:zip(*[iter(a[i:]) for i in xrange(n)])
>>> a=range(10)
>>> zip(*[a[i:] for i in xrange(2)])
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]
 
还可以用itertools实现pairwise
 
hash
hash(text) % 99999999
 
md5计算
import hashlib
m = hashlib.md5()
m.update(text)
text_md5 = m.hexdigest()
text_md5 = hashlib.md5(text).hexdigest()
 
数值
sys.maxint
sys.float_info.max
sys.float_info.epsilon
 
sorted
sorted(dictobj.items(), key=lambda x:x[1], reverse=True)
dictobj == sorted(dictobj.items(), key=lambda x:x[1], reverse=True)
comparision
 
 
使用multiprocessing多进程
example 1:
from multiprocessing import Process, Lock
 
def f(l, i):
    l.acquire()
    print 'hello world', i
    l.release()
 
if __name__ == '__main__':
    lock = Lock()
 
    for num in range(10):
        Process(target=f, args=(lock, num)).start()
 
example 2:
from multiprocessing import Process, Manager
 
def f(d, l):
    d[1] = '1'
    d['2'] = 2
    d[0.25] = None
    l.reverse()
 
if __name__ == '__main__':
    manager = Manager()
 
    d = manager.dict()
    l = manager.list(range(10))
 
    p = Process(target=f, args=(d, l))
    p.start()
    p.join()
 
    print d
    print l
 
will print
{0.25: None, 1: '1', '2': 2}
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
 
example 3:
from multiprocessing import Process, Pool
from multiprocessing.managers import BaseManager
 
class MySharedClass(object):
    stored_value = 0
    def get(self):
        return self.stored_value
 
    def set(self, new_value):
        self.stored_value = new_value
        return self.stored_value
 
class MyManager(BaseManager):
    pass
 
MyManager.register('MySharedClass', MySharedClass)
 
def worker ( proxy_object, i):
    proxy_object.set( proxy_object.get() + i )
    print ("id %d, sum %d" %(i, proxy_object.get()))
    return proxy_object
 
if __name__ == '__main__':
    manager = MyManager()
    manager.start()
    shared = manager.MySharedClass()
 
    pool = Pool(5)
    for i in range(33):
        pool.apply(func=worker, args=(shared, i))
    pool.close()
    pool.join()
    print "result: %d" % shared.get()
 
使用threading多线程
# encoding: utf-8
import sys, os, threading, time
from datetime import datetime
 
def simple_function(tname, delay):
    n = 0
    while n < 5:
        n += 1
        print tname
        time.sleep(delay)
 
class MyThread(threading.Thread):
    def __init__(self, thread_id):
        threading.Thread.__init__(self)
        self.thread_id = thread_id
    def run(self):
        print '%d start' % self.thread_id
        simple_function(self.thread_id, 0.01)
 
def main():
    try:
        threadpool = []
        for i in xrange(30):
            threadpool.append(MyThread(i))
        for t in threadpool:
            t.start()
    except:
        print 'create thread error'
        exit(1)
 
    while 1:
        time.sleep(5)
        print 'main alive'
        print 'running thread num: %d' % len(threading.enumerate())
 
if __name__ == '__main__':
    main()
 
itertools
- mapreduce中使用groupby
import sys, os
import itertools
import operator
 
for k, vs in itertools.groupby(itertools.imap(lambda x:x.rstrip().split('\t'), sys.stdin), operator.itemgetter(0,1,2,3,4)):
    print k
    for v in vs:
        print v
 
- pairwise
import itertools def pairwise(iterable):     "s -> (s0,s1), (s1,s2), (s2, s3), ..."     a, b = itertools.tee(iterable)     next(b, None)     return itertools.izip(a, b)
 
使用requests访问网站
#encoding:utf-8
import requests
import sys
 
fr = open(sys.argv[1])
fw = open(sys.argv[2], 'w')
 
for q in open(sys.argv[1]):
    q=q.strip()
    p = requests.get('http://10.6.131.76:5000/query/?d=2&q=' + q)
    for line in p.content.split('\n'):
        if 'result' in line:
            fw.write('%s\t%s\n' % (q, line))
 
fr.close()
fw.close()
 
获取主机名和ip
import socket
hostname = socket.getfqdn(socket.gethostname())
hostaddr = socket.gethostbyname(hostname)
 
URL解析
>>> import urlparse
>>> parsedTuple = urlparse.urlparse("http://www.google.com/search?hl=en&q=python&btnG=Google+Search")
>>> parsedTuple
ParseResult(scheme='http', netloc='www.google.com', path='/search', params='', query='hl=en&q=python&btnG=Google+Search', fragment='')
 
URL解码
>>> import urllib
>>> rawurl='%7B%22keyword%22%3A%22%25E9%25BB%2584%25E6%2599%25AF%25E7%2591%259C%22%2C%22from%22%3A%22content%22%7D'
>>> url=urllib.unquote(rawurl)
>>> print url
{"keyword":"%E9%BB%84%E6%99%AF%E7%91%9C","from":"content"}
 
 
基础代码模板
def print_usage():
    print "usage: python %s -i [input_file] -o [output_file] -vec [poivector_file] -tag [poitag_file] -type [assess/itemcf]" % sys.argv[0]
    print "example: python %s -i assess_pois.gbk -o assess_result.v7 -vec vectors-poi-v7.txt.part -type assess" % sys.argv[0]
 
if len(sys.argv) < 5:
    print_usage()
    exit(1) 
 
if '-i' in sys.argv:
    argpos = sys.argv.index('-i')
    input_filename = sys.argv[argpos+1]
if '-o' in sys.argv:
    argpos = sys.argv.index('-o')
    output_filename = sys.argv[argpos+1]
if '-vec' in sys.argv:
    argpos = sys.argv.index('-vec')
    poivector_filename = sys.argv[argpos+1]
    sim_type = 'vec' 
if '-tag' in sys.argv:
    argpos = sys.argv.index('-tag')
    poitag_filename = sys.argv[argpos+1]
    sim_type = 'tag' 
if '-type' in sys.argv:
    argpos = sys.argv.index('-type')
    task_type = sys.argv[argpos+1]
 
if __name__ == '__main__':
    pass
 
类属
>>> class Person(): pass
>>> p = Person()
>>> isinstance(p, Person)
True
 
>>> def person(): pass
...
>>> person.name = 'mike'
>>> person
<function person at 0xec37d0>
>>> person.name
‘mike'
>>> hasattr(person, 'name')
True

python编程零碎积累的更多相关文章

  1. 【Python】 零碎知识积累 II

    [Python] 零碎知识积累 II ■ 函数的参数默认值在函数定义时确定并保存在内存中,调用函数时不会在内存中新开辟一块空间然后用参数默认值重新赋值,而是单纯地引用这个参数原来的地址.这就带来了一个 ...

  2. 学习 Python 编程的 19 个资源 (转)

    学习 Python 编程的 19 个资源 2018-01-07 数据与算法之美 编译:wzhvictor,英文:codecondo segmentfault.com/a/119000000418731 ...

  3. 百道Python面试题实现,搞定Python编程就靠它

    对于一般的机器学习求职者而言,最基础的就是掌握 Python 编程技巧,随后才是相关算法或知识点的掌握.在这篇文章中,我们将介绍一个 Python 练习题项目,它从算法练习题到机试实战题提供了众多问题 ...

  4. Python编程无师自通PDF高清完整版免费下载|百度网盘

    百度网盘:Python编程无师自通PDF高清完整版免费下载 提取码:cx73 内容介绍 畅销Python编程类入门书,美国亚马逊Kindle编程类排行榜榜一. 作者从文科毕业,通过自学编程转行为专业程 ...

  5. Python黑帽编程2.1 Python编程哲学

    Python黑帽编程2.1  Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...

  6. Linux运维人员如何学习python编程

    Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...

  7. Python编程核心之makeTextFile.py和readTextFile.py

    引言: 最近大半年都在学习python编程,在双十一的时候购买了<Python编程核心>,看到makeTextFile.py和readTextFile.py两个例子有点错误,所以在这里给修 ...

  8. Python编程规范(PEP8)

    Python编程规范(PEP8) 代码布局 缩进 对于每一次缩进使用4个空格.使用括号.中括号.大括号进行垂直对齐,或者缩进对齐. 制表符还是空格? 永远不要将制表符与空格混合使用.Python最常用 ...

  9. Python 编程规范-----转载

    Python编程规范及性能优化 Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器,默认保存为 utf-8 格式. ...

随机推荐

  1. SDUT 3343 数据结构实验之二叉树四:还原二叉树

    数据结构实验之二叉树四:还原二叉树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 给定一棵 ...

  2. Mac安装破解版Office 2016办公软件

    一.相关软件 Microsoft Office 2016 For Mac Cracker 破解工具 资源地址(链接:https://pan.baidu.com/s/1Z5CIv-XbxS08MniYN ...

  3. web.xml 注册中央调度器Url-pattern 要注意的地方(五)

    一.url-pattern 里面不能用/*     二.最好不要写成杠,如果使用“/”,中央调度器会把静态资源拦截掉,比如图片会不显示,或者css不能用.   但,如果地址栏传参数的时候比如是/del ...

  4. MySQL 5.0的my.cnf配置选项(另外一种方式分类整理)

    一.   mysqld程序--目录和文件 basedir = path 使用给定目录作为根目录(安装目录). Show variables like “basedir”   //数据库中查看目录 da ...

  5. (原创)Codeforces Round #550 (Div. 3) D. Equalize Them All

    D. Equalize Them All time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  6. MVC(Java , C# ,php)

  7. css入门知识点整理

    css入门知识点整理 不要嘲笑我这个蒟蒻..例子来源:w3school css其实就分为两个东西,一个是选择器,另外一个是声明.声明定义了某个对象的属性的值,这都是html的内容.重点要关注的是选择器 ...

  8. 《图解HTTP》阅读笔记-第五章-web服务器

      第五章.与HTTP协助的web服务器单台虚拟主机实现多个域名可以用单台物理主机运行多台虚拟主机,这些虚拟主机的IP相同,而虚拟主机有可以寄存多个不同主机名和域名的web网站,所以要保证发送HTTP ...

  9. jdk 1.6.0_41 下载

    Java SE Development Kit 6u41 Product / File Description File Size Download password Linux x86 65.43 ...

  10. Qt 学习之路 2(17):文件对话框

    Home / Qt 学习之路 2 / Qt 学习之路 2(17):文件对话框 Qt 学习之路 2(17):文件对话框  豆子  2012年9月24日  Qt 学习之路 2  85条评论 在前面的章节中 ...