当前第2页 返回上一页
可以通过创建类的方式实现多进程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | from multiprocessing import Process
import time
class My_Process(Process):
def __init__(self,num):
Process.__init__(self)
self.num = num
def run(self):
time.sleep(2)
print (self.num)
def main():
for i in range(10):
p = My_Process(i)
p.start()
if __name__ == '__main__' :
main()
|
进程池
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | from multiprocessing import Pool
import time
def target(num):
time.sleep(2)
print (num)
def main():
pool = Pool(3)
for i in range(3):
pool.apply_async(target,(i,))
pool.close()
pool.join()
print ( 'Finish!!!' )
if __name__ == '__main__' :
main()
|
对Pool对象调用join()方法会等待所有子进程执行完毕,调用join()之前必须先调用close(),调用close()之后就不能继续添加新的Process了。
Pool(num)里的num为要添加到里面的进程数。不指定进程数,则默认为CPU核心数量。
进程间相互独立
多进程的每一个进程都有一份变量的拷贝,进程之间的操作互不影响。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import multiprocessing
import time
zero = 0
def change_zero():
global zero
for i in range(3):
zero = zero + 1
print (multiprocessing.current_process().name, zero)
if __name__ == '__main__' :
p1 = multiprocessing.Process(target = change_zero)
p2 = multiprocessing.Process(target = change_zero)
p1.start()
p2.start()
p1.join()
p2.join()
print (zero)
|
最后的执行结果:

如果进行文件IO操作,则多进程都会写入同一个文件中。
队列
使用multiprocessing里的Queue可使不同进程访问相同的资源。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from multiprocessing import Process, Queue
def addone(q):
q.put(1)
def addtwo(q):
q.put(2)
if __name__ == '__main__' :
q = Queue()
p1 = Process(target=addone, args = (q, ))
p2 = Process(target=addtwo, args = (q, ))
p1.start()
p2.start()
p1.join()
p2.join()
print (q.get())
print (q.get())
|
以上就是Python实现多进程的详解(附示例)的详细内容,更多文章请关注木庄网络博客!!
返回前面的内容
相关阅读 >>
Python如何实现客户端和服务器端的数据传输(代码)
int在Python中什么意思
Python中什么表示空类型
实例讲解Python基于回溯法子集树模板解决旅行商问题(tsp)
基于Python requests库中的代理实例
Python中sys模块的详细介绍(代码示例)
关于Python中legb与闭包以及装饰器的具体讲解
isinstance在Python中的意思是什么?
Python绘制正方形螺旋线
Python实现按当前日期(年、月、日)创建多级目录的方法
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Python实现多进程的详解(附示例)