# Python中提供了强大的Manage专门用来做数据共享的,其支持的类型非常多,包括,Value, Array,list,dict, Queue, Lock等
import multiprocessing
import time
def worker(d,l):
l += range(11,16)
for i in xrange(1,6):
key = "key{0}".format(i)
val = "val{0}".format(i)
d[key] = val
if __name__ == "__main__":
manager = multiprocessing.Manager()
d = manager.dict()
l = manager.list()
p = multiprocessing.Process(target=worker,args=(d,l))
p.start()
p.join()
print(d)
print(l)
print("main end")
2)进程池
# 进程池
import multiprocessing
import time
def worker(msg):
print("########## start {0} ###########".format(msg))
time.sleep(1)
print("########## end {0} ###########".format(msg))
if __name__ == "__main__":
pool = multiprocessing.Pool(processes=3) # Pool可以提供指定数量的进程,供用户调用,此处意为最多同时3个进程
for i in xrange(1,10):
msg = "hello {0}".format(i)
# pool.apply_async(func=worker,args=(msg,)) # 不阻塞,定义的进程池进程最大数(这里指3个)可以同时执行
pool.apply(func=worker,args=(msg,)) # 阻塞,一个进程结束释放回进程池后,下一个进程才可以开始
pool.close()
pool.join() # 在join之前要先close,否则会报错
print("main end")
1)manager# Python中提供了强大的Manage专门用来做数据共享的,其支持的类型非常多,包括,Value, Array,list,dict, Queue, Lock等import multiprocessingimport timedef worker(d,l): l += range(11,16) for i in xrange(1,6):