例行程序
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. 动态tab页

    1.前台代码 <%-- builed by manage.aspx.cmt  [ver:2015.25.26] at 2015-06-26 15:25:42 --%> <%@ Pag ...

  2. Java数据结构与算法分析-第一章(引论)-Java中的范型<T,E>构件

    一.为什么需要使用范型? 官方的说法是:Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质 ...

  3. EIP权限工作流升级说明-2019/3/12

    流程配置界面,允许流程处理按钮名称自定义:适用于流程过程中显示不同字面意思.流程节点按钮配置界面 流程处理过程中

  4. java 乱码问题解决方案

    java  乱码问题解决方案 一.tomcat: <Connector         port="8080"         maxThreads="150&qu ...

  5. thinkphp 连接数据库 & 实例化模型操作 (下接thinkphp CURD 操作)/慕课

    7.1 连接数据库 (06:15) 1 7.2实例化模型 1 1.实例化基础模型 2 2. 实例化用户自定义模型 2 问题 2 3. 实例化公共模型 4 4. 实例化空模型 7    7.1 连接数据 ...

  6. 洛谷P2518 [HAOI2010]计数

    题目描述 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. ...

  7. React-Native App启动页制作(安卓端)

    原文地址:React-Native App启动页制作(安卓端) 这篇文章是根据开源项目react-native-splash-screen来写的.在使用react-native-link命令安装该包后 ...

  8. 无侵入进行SDK的初始化

    话不多说,下面开始,nagios具体的介绍,可以搜一下,这篇文章为作者在实际操作中整理出来,写出来的都是负责人的内容~ 环境准备 此文档共用2台服务器的配置,操作系统均为centOS6.7,安装用户都 ...

  9. UVA11270 Tiling Dominoes

    \(\color{#0066ff}{ 题目描述 }\) 给定一个m×n的矩形网格,用1×2多米诺骨牌完全平铺. 请注意,即使一个平铺的旋转与另一个平铺相匹配,它们仍算作不同的平铺. 下面显示了一个平铺 ...

  10. P1556 幸福的路

    题意:平面内有N头牛$N\le 10$john从(0,0)出发,最后回到(0,0) 只有走到牛那里john才可以改变方向,否则沿着直线走 问john经过每一头牛并且在每一头牛出恰好改变方向一次的方案( ...