NetworkX的实验性并行后端
项目描述
nx-parallel
nx-parallel是使用joblib进行并行化的NetworkX后端。此项目旨在提供各种NetworkX函数的并行实现,以提高性能。有关NetworkX后端架构的更多信息,请参阅NetworkX后端文档。
nx-parallel中的算法
- number_of_isolates
- square_clustering
- local_efficiency
- closeness_vitality
- is_reachable
- tournament_is_strongly_connected
- all_pairs_node_connectivity
- approximate_all_pairs_node_connectivity
- betweenness_centrality
- node_redundancy
- all_pairs_dijkstra
- all_pairs_dijkstra_path_length
- all_pairs_dijkstra_path
- all_pairs_bellman_ford_path_length
- all_pairs_bellman_ford_path
- johnson
- all_pairs_all_shortest_paths
- all_pairs_shortest_path_length
- all_pairs_shortest_path
生成上述列表的脚本
import _nx_parallel as nxp
d = nxp.get_funcs_info() # temporarily add `from .update_get_info import *` to _nx_parallel/__init__.py
for func in d:
print(f"- [{func}]({d[func]['url']})")
安装
建议首先参考NetworkX的INSTALL.rst。nx-parallel需要Python >=3.10。目前,nx-parallel的唯一依赖项是networkx和joblib。
安装发布版本
您可以使用pip安装nx-parallel的稳定版本
$ pip install nx-parallel
上述命令还安装了 nx-parallel 的两个主要依赖项,即 networkx 和 joblib。要升级到较新版本,请使用 --upgrade
标志。
$ pip install --upgrade nx-parallel
安装开发版本
在安装开发版本之前,您可能需要使用 pip
卸载 nx-parallel 的标准版本和其他两个依赖项。
$ pip uninstall nx-parallel networkx joblib
然后执行以下操作
$ pip install git+https://github.com/networkx/nx-parallel.git@main
后端使用
您只需将 NETWORKX_AUTOMATIC_BACKENDS
环境变量设置为 parallel
,就可以运行您的 networkx 代码。
$ export NETWORKX_AUTOMATIC_BACKENDS=parallel && python nx_code.py
请注意,对于 nx_code.py
中所有没有 nx-parallel 实现的函数,将执行其原始的 networkx 实现。您还可以以下方式在您的代码中使用 nx-parallel 后端来仅针对某些特定函数调用
import networkx as nx
import nx_parallel as nxp
G = nx.path_graph(4)
H = nxp.ParallelGraph(G)
# method 1 : passing ParallelGraph object in networkx function (Type-based dispatching)
nx.betweenness_centrality(H)
# method 2 : using the 'backend' kwarg
nx.betweenness_centrality(G, backend="parallel")
# method 3 : using nx-parallel implementation with networkx object
nxp.betweenness_centrality(G)
# method 4 : using nx-parallel implementation with ParallelGraph object
nxp.betweenness_centrality(H)
# output : {0: 0.0, 1: 0.6666666666666666, 2: 0.6666666666666666, 3: 0.0}
注意
-
networkx 中的一些函数具有相同的名称但不同的实现,因此为了避免在派发网络x时发生这些名称冲突,networkx 会通过在算法的
_dispatchable
装饰器中指定name
参数来区分它们。因此,不建议使用方法 3
和方法 4
。但是,如果您知道正确的name
,则可以使用它们。例如# using `name` parameter - nx-parallel as an independent package nxp.all_pairs_node_connectivity(H) # runs the parallel implementation in `connectivity/connectivity` nxp.approximate_all_pairs_node_connectivity(H) # runs the parallel implementation in `approximation/connectivity`
此外,如果您将 nx-parallel 作为后端使用,建议指定算法所属的子包,以确保 networkx 派发到正确的实现。例如
# with subpackage - nx-parallel as a backend nx.all_pairs_node_connectivity(H) nx.approximation.all_pairs_node_connectivity(H)
-
目前,
nx.Graph
和nxp.ParallelGraph
之间没有太大区别,因此方法 3
可以正常工作,但不建议这样做,因为在将来可能不会是这样。
请随意为 nx-parallel 做出贡献。您可以在这里找到贡献指南。如果您想实现一个功能或修复一个错误,我们很乐意审阅您的拉取请求。请确保在拉取请求描述中解释您所做的更改。并且,如果您遇到任何问题或想要看到的新功能,请随时创建问题。
此项目由 NetworkX 组织管理,因此 NetworkX 的行为准则也适用于此处。
此存储库中的所有代码均受加州大学伯克利分校软件分销(BSD)3条款许可证的约束(请参阅 LICENSE)。
谢谢 :)
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
nx_parallel-0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c1098436b440815cb4246e5592db9cc60dc9c912ead22289a0586afff0c39db7 |
|
MD5 | 55c247e5b26f745c8ca5b598c54f0791 |
|
BLAKE2b-256 | b75847140e51be74bb08061d2d37fec09e7bf28c1acb9f2600ac646c448bb083 |