例行程序
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. JS 求解时间差

    function UTCTimeDemo($str){ var d, s = "当前 UTC 时间为: "; var c = ":"; d = new Date ...

  2. Spring学习大纲

    1.BeanFactory 和 FactoryBean? 2.Spring IOC 的理解,其初始化过程? 3.BeanFactory 和 ApplicationContext? 4.Spring B ...

  3. JMeter上传文件 点选form-data依旧失败的解决方法

    转子:https://blog.csdn.net/xingyunpi/article/details/77930476 这几天一直在调用JMeter上传文件的一个接口,一直出错,在网上找到一些文章说的 ...

  4. python安装opencv库

    1.打开anaconda prompt(安装anaconda会默认安装),键入 pip install opencv-python,如下: 2.安装过程如下所示: 3 测试是否安装成功 上述就说明安装 ...

  5. Glib学习笔记(一)

    你将学到什么 如何使用GObject实现一个新类 类头文件 声明一个类型的方法选择取决于类型是可被继承的还是不可被继承的. 不可被继承的类型(Final类型)使用G_DECLARE_FINAL_TYP ...

  6. Hadoop在ubuntu下安装配置文件及出现问题

    我的配置: 路径: hadoop /home/flyuz/hadoop jdk1.8.0_172 /opt/java/jdk1.8.0_172 eclipse /opt/eclipse 版本: ubu ...

  7. go语言实战教程之 后台管理页面统计功能开发(2)

    上节内容介绍了后台管理页面统计功能开发(1),从功能介绍,到接口请求分析和归类,最后是代码设计.经过上节内容的介绍,已经将业务逻辑和开发逻辑解释清楚,本节内容侧重于编程代码实现具体的功能. 当日增长数 ...

  8. new types may not be defined in a return type(c++语言编译错误,处理)

    在写程序的时候,定义类时要在大括号后面加上: class Point{ public: Point(int a,int b); Point(const Point &p); int getx( ...

  9. Python学习之路--1.0 Python概述及基本数据类型

    Python是一门解释性语言,弱类型语言 python程序的两种编写方式: 1.进入cmd控制台,输入python进入编辑模式,即可直接编写python程序 2.在.朋友文件中编写python代码,通 ...

  10. Vuex基础-Module

    官方API地址:https://vuex.vuejs.org/zh/guide/modules.html 前面几节课写的user.js就称为一个module,这样做的原因是:由于使用单一状态树,应用的 ...