os.fork和multiprocessing.Process之间的行为差异

Hunsu

我有这个代码:

import os

pid = os.fork()

if pid == 0:
    os.environ['HOME'] = "rep1"
    external_function()
else:
    os.environ['HOME'] = "rep2"
    external_function()

和此代码:

from multiprocessing import Process, Pipe

def f(conn):
    os.environ['HOME'] = "rep1"
    external_function()
    conn.send(some_data)
    conn.close()

if __name__ == '__main__':
    os.environ['HOME'] = "rep2"
    external_function()
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    print parent_conn.recv()
    p.join()

external_function通过在环境变量中找到的目录中创建必要的子目录初始化外部程序HOME此功能在每个过程中仅执行一次。

在使用的第一个示例中,os.fork()将按预期创建目录。但是在第二个示例中,该示例使用multiprocessing,仅rep2创建了目录

为什么第二个示例不同时在rep1和中创建目录rep2

用户名

你正在寻找的答案是详细讨论这里也有不同操作系统之间差异的解释。

一个大问题是forkWindows上不存在系统调用。因此,在运行Windows操作系统时,不能使用此方法。multiprocessing是用于执行部分当前正在运行程序的高级接口。因此,它(像分叉一样)创建了您进程当前状态的副本。也就是说,它可以为您分担程序的开销。

因此,如果可用,您可以考虑fork()对程序进行分叉的较低级别的接口,而将multiprocessing视为对程序进行分叉的较高级别的接口。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

os.fork和multiprocessing.Process之间的行为差异

来自分类Dev

OS 终端和 IntelliJ 终端之间的差异

来自分类Dev

:=和[[之间有行为差异吗?

来自分类Dev

onkeydown 和 onkeyup 之间的行为差异

来自分类Dev

Ubuntu 和 CentOS 之间链接行为的差异

来自分类Dev

Imageview和Imagebutton之间关于OS占用内存的差异

来自分类Dev

pip和OS之间的软件包版本差异?

来自分类Dev

Windows 8.1和Windows 10之间的UAC高程行为差异

来自分类Dev

Java 11和Java 8 DecimalFormat行为之间的差异

来自分类Dev

python模块的终端和bash脚本之间的奇怪行为差异

来自分类Dev

Java 11和Java 8 DecimalFormat行为之间的差异

来自分类Dev

脚本和命令行之间的glob行为差异

来自分类Dev

Windows 8.1和Windows 10之间的UAC高程行为差异

来自分类Dev

OS X和Linux之间的Python Pickle差异(通过Pandas DataFrame对象)

来自分类Dev

Mac OS X Finder:文件的“大小”和“在磁盘上”值之间存在很大差异

来自分类Dev

fork(3)和fork(2)之间的区别

来自分类Dev

是什么原因导致Windows和Linux之间的malloc()和free()行为出现差异?

来自分类Dev

Clang和GCC中模棱两可的基类转换之间的行为差异

来自分类Dev

std :: unique_ptr和std :: shared_ptr之间的破坏行为差异的原理是什么?

来自分类Dev

Python中super().__ init __()和显式超类__init __()之间的行为差异

来自分类Dev

错误的实例化功能本身并未实例化。lang和gcc之间的行为差异

来自分类Dev

带iFrame的Chrome和Safari扩展之间行为上的奇怪差异

来自分类Dev

NuGet:Update-Package和nuget.exe更新之间的行为差异?

来自分类Dev

从终端启动和使用popen之间的OpenOffice行为差异-两者都在chroot中

来自分类Dev

无法理解@EnableWebMvc和<annotation-driven />之间的行为差异

来自分类Dev

os.system(“ pwd”)和os.getcwd()之间的区别

来自分类Dev

Python:os.isfile()和os.listdir()之间的分歧

来自分类Dev

os.mkdir()和os.makedirs()之间的区别

来自分类Dev

os.system(“ pwd”)和os.getcwd()之间的区别

Related 相关文章

  1. 1

    os.fork和multiprocessing.Process之间的行为差异

  2. 2

    OS 终端和 IntelliJ 终端之间的差异

  3. 3

    :=和[[之间有行为差异吗?

  4. 4

    onkeydown 和 onkeyup 之间的行为差异

  5. 5

    Ubuntu 和 CentOS 之间链接行为的差异

  6. 6

    Imageview和Imagebutton之间关于OS占用内存的差异

  7. 7

    pip和OS之间的软件包版本差异?

  8. 8

    Windows 8.1和Windows 10之间的UAC高程行为差异

  9. 9

    Java 11和Java 8 DecimalFormat行为之间的差异

  10. 10

    python模块的终端和bash脚本之间的奇怪行为差异

  11. 11

    Java 11和Java 8 DecimalFormat行为之间的差异

  12. 12

    脚本和命令行之间的glob行为差异

  13. 13

    Windows 8.1和Windows 10之间的UAC高程行为差异

  14. 14

    OS X和Linux之间的Python Pickle差异(通过Pandas DataFrame对象)

  15. 15

    Mac OS X Finder:文件的“大小”和“在磁盘上”值之间存在很大差异

  16. 16

    fork(3)和fork(2)之间的区别

  17. 17

    是什么原因导致Windows和Linux之间的malloc()和free()行为出现差异?

  18. 18

    Clang和GCC中模棱两可的基类转换之间的行为差异

  19. 19

    std :: unique_ptr和std :: shared_ptr之间的破坏行为差异的原理是什么?

  20. 20

    Python中super().__ init __()和显式超类__init __()之间的行为差异

  21. 21

    错误的实例化功能本身并未实例化。lang和gcc之间的行为差异

  22. 22

    带iFrame的Chrome和Safari扩展之间行为上的奇怪差异

  23. 23

    NuGet:Update-Package和nuget.exe更新之间的行为差异?

  24. 24

    从终端启动和使用popen之间的OpenOffice行为差异-两者都在chroot中

  25. 25

    无法理解@EnableWebMvc和<annotation-driven />之间的行为差异

  26. 26

    os.system(“ pwd”)和os.getcwd()之间的区别

  27. 27

    Python:os.isfile()和os.listdir()之间的分歧

  28. 28

    os.mkdir()和os.makedirs()之间的区别

  29. 29

    os.system(“ pwd”)和os.getcwd()之间的区别

热门标签

归档