multiprocess模块那来干嘛的?
答:利用multiprocessing可以在主进程中创建子进程。
#该模块和Threading模块使用方法基本类似。
案例:
1 #!usr/bin/env python 2 #encding:utf-8 3 #by i3ekr 4 5 import multiprocessing,time 6 7 def job(q,a):#将Queue当参数传入,且必须放在首位。 8 time.sleep(3) 9 print ‘this is test...%s‘%(a) 10 11 12 start = time.time() 13 q = multiprocessing.Queue()#定义一个Queue,这个Queue是必须的。 14 p1 = multiprocessing.Process(target=job,args=(q,1))#创建一个线程,第一个q是Queue,第二个是参数的value。如果没有参数的话必须要(q,)逗号是必须要加的 15 p2 = multiprocessing.Process(target=job,args=(q,2)) 16 p1.start() 17 p2.start() 18 p1.join() 19 p2.join() 20 end = time.time() 21 print("run time is %s"%(end-start))
输出结果:
root@i3ekr:/home/i3ekr/Desktop# python 1.py
this is test...1
this is test...2
run time is 3.0163371563
那么函数有返回值的时候怎么做?
使用队列.put()进行保存值。使用get得到返回值。如下案例所示:
需要注意得是:
1 #!usr/bin/env python 2 #encding:utf-8 3 #by i3ekr 4 5 import multiprocessing,time 6 7 def job(q,a): 8 time.sleep(3) 9 q.put(a)#得到a 10 11 12 if __name__ == ‘__main__‘: 13 start = time.time() 14 q = multiprocessing.Queue() 15 p1 = multiprocessing.Process(target=job,args=(q,1)) 16 p2 = multiprocessing.Process(target=job,args=(q,2)) 17 p1.start() 18 p2.start() 19 p1.join() 20 p2.join() 21 res1 = q.get()#得到job得返回值 22 res2 = q.get() 23 print res1,res2 24 end = time.time() 25 print("run time is %s"%(end-start))
输出结果:
root@i3ekr:/home/i3ekr/Desktop# python 1.py
1 2
run time is 3.01186394691
原文:https://www.cnblogs.com/nul1/p/8964843.html