01 2012 档案
摘要: 以下基本上是重装系统必须安装的软件:浏览器: chrome翻译: 有道词典输入法:搜狗输入法文本编辑:Notepad++截图且自动加水印:SPX Bundle思维导图:xmindUML画图: starUML虚拟系统: virtualbox文件锁检测:unlocker压缩解压:7zip +IZArc系统explorer增强 :StExBar脚本语言:python+perl虚拟光驱:deamon lite远程桌面管理:RemoteDesktopManager远程桌面:putty不同平台共享:winscp正则表达式测试工具:Regex Match Tracer系统增强工具:SysinternalsS阅读全文
摘要: 参考:http://wiki.python.org/moin/ParallelProcessinghttp://wiki.python.org/moin/DistributedProgramming分布式:http://www.celeryproject.org/http://www.parallelpython.com/http://code.google.com/p/distributed-python-for-scripting/http://code.google.com/p/superpy/http://code.google.com/appengine/cloud:http://w阅读全文
摘要: 一 picklepickle模块用来实现python对象的序列化和反序列化。通常地pickle将python对象序列化为二进制流或文件。python对象与文件之间的序列化和反序列化:pickle.dump()pickle.load()如果要实现python对象和字符串间的序列化和反序列化,则使用:pickle.dumps()pickle.loads()可以被序列化的类型有:* None,True 和 False;* 整数,浮点数,复数;* 字符串,字节流,字节数组;* 包含可pickle对象的tuples,lists,sets和dictionaries;* 定义在module顶层的函数:* 定阅读全文
摘要: 一 poolmultiprocessing.pool也就是传说中的进程池,pool的构造如下multiprocessing.Pool([processes[, initializer[, initargs[, maxtasksperchild]]]]) 中,processes表示pool中进程的数目,默认地为当前CPU的核数。initializer表示新进程的初始化函数。initargs表示新进程的初始化函数的参数。maxtasksperchild表示每个进程执行task的最大数目。apply()用来为pool中的进程赋予task。map()用来循环地为pool中的进程赋予tasks。clos阅读全文
摘要: Python中进程间共享数据,处理基本的queue,pipe和value+array外,还提供了更高层次的封装。使用multiprocessing.Manager可以简单地使用这些高级接口。Manager()返回的manager对象控制了一个server进程,此进程包含的python对象可以被其他的进程通过proxies来访问。从而达到多进程间数据通信且安全。Manager支持的类型有list,dict,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Queue,Value和Array。1) Manager的dic阅读全文
摘要: 同步的方法基本与多线程相同。1) Lock当多个进程需要访问共享资源的时候,Lock可以用来避免访问的冲突。importmultiprocessingimportsysdefworker_with(lock,f):withlock:fs=open(f,"a+")fs.write('Lockacquiredviawith\n')fs.close()defworker_no_with(lock,f):lock.acquire()try:fs=open(f,"a+")fs.write('Lockacquireddirectly\n阅读全文
摘要: 多进程通信queue和pipe的区别: pipe用来在两个进程间通信。queue用来在多个进程间实现通信。 此两种方法为所有系统多进程通信的基本方法,几乎所有的语言都支持此两种方法。1)Queue & JoinableQueuequeue用来在进程间传递消息,任何可以pickle-able的对象都可以在加入到queue。multiprocessing.JoinableQueue 是 Queue的子类,增加了task_done()和join()方法。task_done()用来告诉queue一个task完成。一般地在调用get()获得一个task,在task结束后调用task_done()阅读全文
摘要: 由于CPython实现中的GIL的限制,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况我们需要使用多进程。 这也许就是python中多进程类库如此简洁好用的原因所在。在python中可以向多线程一样简单地使用多进程。一 多进程process的成员变量和方法:>>class multiprocessing.Process([group[, target[, name[, args[, kwargs]]]]]) 来的定义类似于threading.Thread。target表示此进程运行的函数,args和kwargs表示tar阅读全文
摘要: 转自:http://blog.csdn.net/lanphaday/article/details/6601123但是有些如果与python自带的类库有冲突的做了适当的修改。1 编码>>所有的 Python 脚本文件都应在文件头标上如下标识或其兼容格式的标识:# -*- coding:utf-8 -*- >>设置编辑器,默认新建或保存为utf-8格式。2 注释>>业界普遍认同 Python 的注释分为两种的概念,一种是由 # 开头的“真正的”注释,另一种是 docstrings。前者表明为何选择当前实现以及这种实现的原理和难点,后者表明如何使用这个包、模块、阅读全文
摘要: 多线程基础:python类库32[多线程同步]一 多线程同步由于CPython的python解释器在单线程模式下执行,所以导致python的多线程在很多的时候并不能很好地发挥多核cpu的资源。大部分情况都推荐使用多进程。python的多线程的同步与其他语言基本相同,主要包含:Lock & RLock :用来确保多线程多共享资源的访问。Semaphore : 用来确保一定资源多线程访问时的上限,例如资源池。Event : 是最简单的线程间通信的方式,一个线程可以发送信号,其他的线程接收到信号后执行操作。 二 实例1)Lock & RLockLock对象的状态可以为locked和u阅读全文
摘要: 一 python 多线程因为CPython的实现使用了Global Interpereter Lock(GIL),使得python中同一时刻只有一个线程在执行,从而简化了python解释器的实现,且python对象模型天然地线程安全。如果你想你的应用程序在多核的机器上使用更好的资源,建议使用multiprocessing或concurrent.futures.processpoolexecutor。但是如果你的程序是IO密集型,则使用线程仍然是很好的选择。二 python 多线程使用的两种方法实例:importthreadingimporttimedefworker(num):print(th阅读全文