例行程序
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. Hadoop的Writerable在Spark无法序列化的问题

    Spark序列化这块网上讲的比较少,自己还没来得及看这块代码,今天编程的时候遇到一个Hadoop的Writerable实现在Spark无法序列化的问题.我的代码如下: object EntryApp ...

  2. C#中 ACCESS数据库常用操作语句...容易出错的地方(DateTime类型)

    这次在C#编程过程中,第一次用到了ACCESS数据库,重点涉及到时间类型,整数类型.是否类型....;遇到了许多困难,就把这些整理了下来,与大家分享. 一.Insert语句的基本格式: INSERT ...

  3. c# XML增删改查

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. adb 无法调试的问题,ADB server didn't ACK,* failed to start daemon *

    The connection to adb is down, and a severe error has occured. You must restart adb and Eclipse. Ple ...

  5. 基于Ace Admin 的菜单栏实现

    1.首先是数据库表必然包含以下几个字段Id ,ParnetId,Url,Name等 create table dbo.Module ( Id uniqueidentifier not null con ...

  6. Glib学习笔记(二)

    你将学到什么 如何实现Object的构造函数和析构函数 如何在条件检测不允许的情况下终止对象创建 Object的构造函数 对象的构造函数是不允许失败,如果你需要一个允许失败的GObject构造函数,使 ...

  7. NSNull空值

    1.前言 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间. 1.1 NULL & nil 的区别: nil 是 OC 的,空对象,地址指向空的对象,指针地址指向的是 NUL ...

  8. SQLAlchemy外键的使用

    orm可以将数据库存储的数据封装成对象,同时,如果封装的好的话,所有的数据库操作都可以封装到对象中.这样的代码在组织结构上会非常的清晰,并且相对与使用sql语句在sql注入方面会极具降低. SQLAl ...

  9. 「FJ2014集训」采药人的路径

    啦啦啦 来写一篇题解 洛谷链接: P4930 「FJ2014集训」采药人的路径 统计路径?嗯往点分治上想. 把0和1转化为-1和1,求和完dis为0的路径就是阴阳平衡的路径了. 如果题目没有限制要有中 ...

  10. DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)

    SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存 ...