例行程序
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. redis系列:集群

    1 简介 Redis 集群是Redis 的一个分布式实现,它是一个网状结构,每个节点都通过 TCP 连接跟其他每个节点连接.现在来看看Redis集群实现了哪些目标? 在1000个节点的时候仍能表现得很 ...

  2. 2015年第六届蓝桥杯省赛试题(JavaA组)

    1.结果填空 (满分3分)2.结果填空 (满分5分)3.结果填空 (满分9分)4.代码填空 (满分11分)5.代码填空 (满分13分)6.结果填空 (满分17分)7.结果填空 (满分21分)8.程序设 ...

  3. spark(1) - ubuntu 下 spark 安装

    简单步骤: 前提:hadoop 环境搭建(我的是伪分布式) 1.官网下载spark 2.spark部署(单机模式): (1)解压 (2)移动文件到自定义目录下(同时修改文件名-原来的名字太长) (3) ...

  4. js判断页面从何种浏览器打开

    问题 有时项目需要根据不同的设备进行不同的处理,需要判断到底是哪种设备打开了项目. 移动端浏览器检测 移动终端浏览器版本信息: var browser = { versions: function ( ...

  5. vagrant 使用

    1. 下载官方的 box 文件. 官方box列表 2. 在本地创建一个目录.如: D:\test\ 3. 运行 cmd 命令,并进入 d:\test 目录 4. 添加前面下载的 box. 添加 box ...

  6. Java与其它语言的比较

    Java与C/C++相比.Java语言是一种完全的面对对象语言,虽然他的底层(运行时库)是用C语言开发 的,可是并不依赖于C.因为Java的运行是在运行时库的支持下运行的,所以运行的效率比起可以更接近 ...

  7. 洛谷P3901 数列找不同(莫队)

    传送门 我不管我不管我就是要用莫队 直接用莫队裸上 //minamoto #include<iostream> #include<cstdio> #include<alg ...

  8. #6145. 「2017 山东三轮集训 Day7」Easy 动态点分治

    \(\color{#0066ff}{题目描述}\) JOHNKRAM 最近在参加 C_SUNSHINE 举办的聚会. C 国一共有 n 座城市,这些城市由 n−1 条无向道路连接.任意两座城市之间有且 ...

  9. 背包DP【洛谷P2113】 看球泡妹子

    P2113 看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有N支球队,M场比赛.男球迷小明喜欢看比赛 ...

  10. cookie和session的使用和区别

    cookie:存储在浏览器 存值:setcookie("名字",值,过期时间.秒,哪一个文件夹)//文件夹不写一般默认整个网站都可以 setcookie("usernam ...