Python实现多进程的详解(附示例)


当前第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)

最后的执行结果:

842090432-5bc9d3133aa5a_articlex.png

如果进行文件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》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...