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


本文摘自php中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于Python实现多进程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

fork函数创建子进程

基本使用

Linux 操作系统提供了一个 fork函数用来创建子进程。fork()位于Python的os模块中。
使用导入os模块即可。

1

2

import os

os.fork()

每次调用fork()函数后,相应的父进程都会生成一个子进程。
例如下面这段代码:

1

2

3

4

import os

os.fork()

os.fork()

os.fork()

执行之后将会生成8个进程。

fork()函数的返回值

fork()函数对于子进程的返回值永远是0,而对父进程的返回值则为子进程的pid(进程号)。

实例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!/usr/bin/env python

import os

import time

 

rt = os.fork()

 

if rt == 0:

    print(f"The child process is {os.getpid()} . His father is {os.getppid()}")  # os.getpid()获取当前进程进程号,os.getppid()获取当前进程的父进程号

    time.sleep(5)

else:

    print(f"The father process is {os.getpid()} . His father is {os.getppid()}")

    time.sleep(5)

 

print(f"Now the process is {os.getpid()} . His father is {os.getppid()}")

执行结果:

2100722135-5bc5ec5af2b28_articlex.png

进程模块

导入模块

Python也提供了multiprocessing库给全平台提供了多线程编程。

1

import multiprocessing

简单进程

下面代码为一个简单进程:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

from multiprocessing import Process

 

 

def work(num):

    for i in range(10):

        num += 1

    print(num)

    return 0

 

 

def main():

    num = 1

    p1 = Process(target = work, args = (num,))

    p1.start()

 

 

if __name__ == '__main__':

    main()

43052507-5bc89a60aaba3_articlex.png

这里从multiprocessing库引入Process这个类。
p1 = Process(target = work, args = (num,))是创建一个进程。target为所要执行任务的函数,args则为接收的参数,必须以元组形式给与。
start()是让进程开始运行。
同时进程有一些方法:

join方法

Process的join方法与多线程类似。为等待进程运行结束。
使用方法:join(timeout)。
使用join(),程序会等待进程结束后再继续进行下面的代码。
如果加入了timeout参数,则程序会等待timeout秒后继续执行下面的程序。

close方法

close()用于关闭进程,但是不能关闭正在运行中的子进程。

进程类

阅读剩余部分

相关阅读 >>

Python转大数据容易吗

Python 在字符串中加入变量的实例讲解

Python变量类型-字典的实战运用与分析

Python中where()函数的用法详解

什么是Python函数

Python实现图片识别功能的示例分享

caffe导入到Python报错怎么办

pycharm上创建一个Python程序全过程

Python如何输出换行

如何利用Python刷访问量

更多相关阅读请进入《Python》频道 >>




打赏

取消

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

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

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

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

评论

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