配置#
配置提供了库级别的配置设置存储。这些设置可以在代码中或从环境变量中进行。
- 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
为后端实现的函数启用将图自动转换为后端图。优先考虑列表中靠前的后端。这是一个嵌套配置,包含键
algos
、generators
以及可选的函数名称。将此值设置为后端名称列表将设置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')