进程是由系统自己管理的。
1:最基本的写法
from multiprocessing import Pooldef f(x): return x*xif __name__ == '__main__': p = Pool(5) print(p.map(f,[1,2,3]))[1,4,9]
2、实际上是通过os.fork的方法产生进程的
unix中,所有进程都是通过fork的方法产生的。
multiprocessing Processosinfo(Title): Title,__name__ (os,):,os.getppID(),os.getpID()f(name): info(),name__name__ == : info() p = Process(=f,=(,)) p.start() p.join()
3、线程共享内存
threadingrun(info_List,n): info_List.append(n) info_List__name__ == : info=[] i (): p=threading.Thread(=run,=[info,i]) p.start()[0][0,1][0,1,2][0,3][0,3,4][0,5][0,5,6][0,6,7][0,7,8][0,8,9]
进程不共享内存:
multiprocessing Processrun(info_List,n): info_List.append(n) info_List__name__ == : info=[] i (): p=Process(=run,i]) p.start()[1][2][3][0][4][5][6][7][8][9]
若想共享内存,需使用multiprocessing模块中的Queue
multiprocessing Process,Queuef(q,n): q.put([n,])__name__ == : q=Queue() i (): p=Process(=f,=(q,i)) p.start() : q.get()
4、锁:仅是对于屏幕的共享,因为进程是独立的,所以对于多进程没有用
multiprocessing Process,Lockf(l,i): l.acquire(),i l.release()__name__ == : lock = Lock() num (): Process(=f,=(lock,num)).start()hello world 0hello world 1hello world 2hello world 3hello world 4hello world 5hello world 6hello world 7hello world 8hello world 9
5、进程间内存共享:Value,Array
multiprocessing Process,Value,Arrayf(n,a): n.value = i ((a)): a[i] = -a[i]__name__ == : num = Value(,) arr = Array(,()) num.value arr[:] p = Process(=f,=(num,arr)) p.start() p.join()0.0[0,9]3.1415927[0,-1,-2,-3,-4,-5,-6,-7,-8,-9]
#manager共享方法,但速度慢
multiprocessing Process,Managerf(d,l): d[] = d[] = d[] = l.reverse()__name__ == : manager = Manager() d = manager.dict() l = manager.List(()) p = Process(=f,=(d,l)) p.start() p.join() d l# print '-------------'这里只是另一种写法# print pool.map(f,range(10)){0.25: None,1: '1','2': 2}[9,0]
#异步:这种写法用的不多
multiprocessing Pooltimef(x): x*x time.sleep() x*x__name__ == : pool=Pool(=) res_List=[] i (): res=pool.apply_async(f,[i]) res_List.append(res) r res_List: r.get(timeout=10) #超时时间
同步的就是apply
总结以上是内存溢出为你收集整理的简单谈谈python中的多进程全部内容,希望文章能够帮你解决简单谈谈python中的多进程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)