码迷,mamicode.com
首页 > 编程语言 > 详细

python中multiprocessing模块

时间:2018-04-27 22:59:59      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:his   target   python 1   ==   必须   this   方法   int   保存   

multiprocess模块那来干嘛的?

答:利用multiprocessing可以在主进程中创建子进程。

#该模块和Threading模块使用方法基本类似。

  • 首先需要说明,你所使用多线程的函数不能有return,比如你要将job这个函数多线程那么在job这个函数里就不能有return,如果有返回值请看文章的最后。
  • multiprocessing最好写在if __name__ == ‘__main__‘当中,如果不放在这里面,windows可能会出错。其余环境则不会出现这种情况。我第一个案例没有加,第二个案例加了。

案例:

 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得到返回值。如下案例所示:

需要注意得是:

  • 有多少个返回值就要有多少个get。并不是一下子把所有得返回值全都一起输出之类得。如下代码20-21行,因为有两个线程,所以执行了两遍job函数,所以也有两个返回值。故也必须要有两个get去得到value
 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

 

python中multiprocessing模块

标签:his   target   python 1   ==   必须   this   方法   int   保存   

原文地址:https://www.cnblogs.com/nul1/p/8964843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!