博客
关于我
python 多进程-基础
阅读量:795 次
发布时间:2023-03-07

本文共 1392 字,大约阅读时间需要 4 分钟。

Python 实现多进程的方式

在 Python 中实现多进程,有两种主要方法:一种是使用 os 模块的 fork 方法,另一种是使用 multiprocessing 模块。两种方法各有特点,适用于不同的场景。

os.fork 方法

os.fork 方法源自 Unix/Linux 操作系统,用于复制当前进程,创建子进程。与普通的函数调用不同,fork 方法会返回两次:

  • 父进程调用 fork 后,返回子进程的进程 ID。
  • 子进程调用 fork 后,返回 0。

os.getpid() 可以获取当前进程的 ID,而 os.getppid() 则获取父进程的 ID。以下是使用 os.fork 的示例代码:

import osif __name__ == '__main__':    print('当前进程 ID:%s' % os.getpid())    pid = os.fork()    if pid < 0:        print('fork 失败')    elif pid == 0:        print('子进程 ID:%s' % os.getpid())        print('父进程 ID:%s' % os.getppid())    else:        print('创建了一个子进程 ID:%s' % pid)

运行上述代码可以看到,父进程和子进程的行为是对称的。每个进程都可以独立运行,但它们共享同样的内存空间和文件描述符。

multiprocessing 模块

multiprocessing 模块提供了更高级的多进程管理功能。它的 Process 类允许创建和管理子进程。创建子进程时,只需传入一个目标函数和其参数即可。start() 方法用于启动进程,join() 方法用于等待子进程完成。

以下是使用 multiprocessing 模块的示例代码:

from multiprocessing import Processimport osdef run_proc(name):    print('子进程 %s:%s' % (name, os.getpid()))if __name__ == '__main__':    print('父进程 ID:%s' % os.getpid())    for i in range(5):        print('将要启动一个进程')        p = Process(target=run_proc, args=(str(i),))        p.start()    print('等待所有进程完成')    for p in Process.active_children():        p.join()    print('所有进程已结束')

运行上述代码可以看到,父进程会创建五个子进程(每个子进程运行 run_proc 函数),然后等待所有子进程完成。每个子进程都会输出其进程 ID 和名称。

两种方法的区别

  • os.fork:适用于 Unix/Linux 系统,不支持 Windows。
  • multiprocessing:跨平台支持,包括 Windows。

两种方法的选择取决于具体需求。如果需要跨平台支持,multiprocessing 是更好的选择。

转载地址:http://uiofk.baihongyu.com/

你可能感兴趣的文章
Python 子进程 Popen.communicate() 等价于 Popen.stdout.read()?
查看>>
Python 子进程 Popen:为什么会出现“ls *.txt“?不行?
查看>>
Python 子进程参数
查看>>
python 字典 key 和value 互换
查看>>
Python 字典 vs If 语句速度
查看>>
python 字典sorted自定义排序,按照key or value排序
查看>>
python 字典和列表区别_元组列表和字典的主要区别是什么?
查看>>
python 字符串中特定字符替换,截取
查看>>
Python 字符串总结
查看>>
python 字符串显示中文_Python字符串开头的b"、u"、r"与中文乱码
查看>>
Python 字符串的几种拼装方式
查看>>
python 存入数据库bigint_python基础_MySQL的bigint类型
查看>>
python 学习 面向对象编程
查看>>
Python 学习小结
查看>>
Python 学习日记第三篇 -- 字典
查看>>
Python 学习笔记(一)Data type
查看>>
python 安装 easy_install 和 pip 流程
查看>>
python 安装echarts
查看>>
python 安装opencv及问题解决
查看>>
Python 安装程序:“写入文件 C:\Python27\pythonw.exe 时出错“
查看>>