垃圾收集如何与多个正在运行的进程/线程一起使用?

Jam*_*rtz 7 python garbage-collection multiprocessing python-2.7

我有一个类似服务器的Python程序,它接收数据包,并根据数据包的类型处理它们.为此,我使用该multiprocessing模块生成了多个进程.我注意到垃圾收集在操作期间会导致一些延迟,并且数据包不会在所需的时间范围内处理.我知道如何禁用垃圾收集:

import gc
gc.disable()
Run Code Online (Sandbox Code Playgroud)

但是我的问题是,当涉及多个进程或线程时,Python如何处理垃圾收集?进程或线程的垃圾收集之间是否存在差异?我是否需要为每个进程/线程更改垃圾回收?或者父进程/线程中的垃圾回收中的单个更改是否也负责处理所有子进程/线程?

我目前的情况使用Python 2.7但是我很想知道Python 2和Python 3是否相同.

Use*_*ser 3

一个进程可以有多个线程。垃圾收集在一个进程内进行。

在支持 fork 的系统上:如果您在一个进程中禁用垃圾收集,然后对它进行 fork(= 创建该进程的副本),那么也应该在该副本中禁用 GC。

如果创建的新进程不是副本,那么它们有自己的垃圾收集配置。默认情况下,他们的 GC 应处于打开状态。

但是有很多图书馆都有一个Process类。我不知道他们做了什么。如果您用来os生成一个新进程(而不是副本),那么它应该在打开 GC 的情况下运行。

一个进程的 GC 配置不会影响另一进程的 GC 配置。进程是保护代码免受彼此影响的边界。因此,一个进程中的任何内容都无法轻松地进入另一进程。