摘要: 参考: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 阅读全文
posted @ 2012-01-10 18:36 iTech 阅读(5700) 评论(0) 推荐(0) 编辑
摘要: 一 picklepickle模块用来实现python对象的序列化和反序列化。通常地pickle将python对象序列化为二进制流或文件。python对象与文件之间的序列化和反序列化:pickle.dump()pickle.load()如果要实现python对象和字符串间的序列化和反序列化,则使用:pickle.dumps()pickle.loads()可以被序列化的类型有:* None,True 和 False;* 整数,浮点数,复数;* 字符串,字节流,字节数组;* 包含可pickle对象的tuples,lists,sets和dictionaries;* 定义在module顶层的函数:* 定 阅读全文
posted @ 2012-01-10 17:49 iTech 阅读(5088) 评论(0) 推荐(2) 编辑
摘要: 一 poolmultiprocessing.pool也就是传说中的进程池,pool的构造如下multiprocessing.Pool([processes[, initializer[, initargs[, maxtasksperchild]]]]) 中,processes表示pool中进程的数目,默认地为当前CPU的核数。initializer表示新进程的初始化函数。initargs表示新进程的初始化函数的参数。maxtasksperchild表示每个进程执行task的最大数目。apply()用来为pool中的进程赋予task。map()用来循环地为pool中的进程赋予tasks。clos 阅读全文
posted @ 2012-01-10 16:12 iTech 阅读(1907) 评论(0) 推荐(0) 编辑
摘要: 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 阅读全文
posted @ 2012-01-10 14:49 iTech 阅读(18685) 评论(0) 推荐(0) 编辑
摘要: 同步的方法基本与多线程相同。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 阅读全文
posted @ 2012-01-10 13:57 iTech 阅读(4118) 评论(0) 推荐(0) 编辑