配置#

配置提供了库级别的配置设置存储。这些设置可以在代码中或从环境变量中进行。

config#

NetworkXConfig 的别名(backend_priority=BackendPriorities(algos=[], generators=[]), backends=Config(parallel=ParallelConfig(active=False, backend=’loky’, n_jobs=None, verbose=0, temp_folder=None, max_nbytes=’1M’, mmap_mode=’r’, prefer=None, require=None, inner_max_num_threads=None, backend_params={}), cugraph=Config(use_compat_graphs=True), graphblas=Config()), cache_converted_graphs=True, fallback_to_nx=False, warnings_to_ignore=set())

class NetworkXConfig(**kwargs)[source]#

NetworkX 的配置,用于控制行为,例如如何使用后端。

支持属性和方括号表示法来获取和设置配置

>>> nx.config.backend_priority == nx.config["backend_priority"]
True
参数:
backend_priority后端名称列表、字典或 BackendPriorities

为后端实现的函数启用将图自动转换为后端图。优先考虑列表中靠前的后端。这是一个嵌套配置,包含键 algosgenerators 以及可选的函数名称。将此值设置为后端名称列表将设置 nx.config.backend_priority.algos。有关更多信息,请参阅 help(nx.config.backend_priority)。默认为空列表。

backends将后端名称映射到后端 Config 的 Config 映射

Config 映射的键是所有已安装的 NetworkX 后端的名称,值是它们作为 Config 映射的配置。

cache_converted_graphsbool

如果为 True,则将转换后的图保存到输入图的缓存中。图转换可能发生在自动使用 backend_priority 中的后端时,或在函数调用中使用 backend= 关键字参数时。缓存可以通过避免重复转换来提高性能,但会占用更多内存。修改已缓存图的图时应小心;例如,G[u][v][k] = val 更改图,但不会清除缓存。使用 G.add_edge(u, v, weight=val) 等方法将清除缓存以保持一致性。G.__networkx_cache__.clear() 手动清除缓存。默认为 True。

fallback_to_nxbool

如果为 True,则对于输入图的后端未实现的、可调度函数,将“回退”并使用默认的“networkx”实现运行。当后端图传递给可调度函数时,默认行为是尽可能使用该后端的实现,如果不能则引发异常。启用 fallback_to_nx 会使 networkx 实现成为回退选项而不是引发异常,并将后端图转换为 networkx 兼容图。默认为 False。

warnings_to_ignore字符串集合

控制不发出 NetworkX 的哪些警告。有效元素包括

  • "cache": 从 G.__networkx_cache__ 使用缓存值时。

注意

环境变量可用于控制一些默认配置

  • NETWORKX_BACKEND_PRIORITY: 从逗号分隔的名称设置 backend_priority.algos

  • NETWORKX_CACHE_CONVERTED_GRAPHS: 如果非空,则将 cache_converted_graphs 设置为 True。

  • NETWORKX_FALLBACK_TO_NX: 如果非空,则将 fallback_to_nx 设置为 True。

  • NETWORKX_WARNINGS_TO_IGNORE: 从逗号分隔的名称设置 warnings_to_ignore

并可用于更精细地控制 backend_priority,例如

  • NETWORKX_BACKEND_PRIORITY_ALGOS: 与 NETWORKX_BACKEND_PRIORITY 相同,用于设置 backend_priority.algos

这是一个全局配置。在多线程中使用时请谨慎。

class Config(**kwargs)[source]#

NetworkX 配置的基类。

有两种方法可以使用它创建配置。推荐的方法是使用文档和注释来继承 Config

>>> class MyConfig(Config):
...     '''Breakfast!'''
...
...     eggs: int
...     spam: int
...
...     def _on_setattr(self, key, value):
...         assert isinstance(value, int) and value >= 0
...         return value
>>> cfg = MyConfig(eggs=1, spam=5)

另一种方法是简单地将初始配置作为关键字参数传递给 Config 实例

>>> cfg1 = Config(eggs=1, spam=5)
>>> cfg1
Config(eggs=1, spam=5)

定义后,配置项可以修改,但默认情况下不能添加或删除。Config 是一个 Mapping,可以通过属性或方括号获取和设置配置。

>>> cfg.eggs = 2
>>> cfg.eggs
2
>>> cfg["spam"] = 42
>>> cfg["spam"]
42

为了方便,它也可以通过“with”语句在上下文中设置配置。

>>> with cfg(spam=3):
...     print("spam (in context):", cfg.spam)
spam (in context): 3
>>> print("spam (after context):", cfg.spam)
spam (after context): 42

子类也可以定义 _on_setattr(如上例所示)以确保分配的值有效。

>>> cfg.spam = -1
Traceback (most recent call last):
    ...
AssertionError

如果需要一个更灵活的、允许添加和删除配置的配置对象,那么在定义子类时传递 strict=False

>>> class FlexibleConfig(Config, strict=False):
...     default_greeting: str = "Hello"
>>> flexcfg = FlexibleConfig()
>>> flexcfg.name = "Mr. Anderson"
>>> flexcfg
FlexibleConfig(default_greeting='Hello', name='Mr. Anderson')