У меня есть DiGraph в networkx с ~ 8M узлами ~ 30M краями. Моя цель - отбросить подмножество (~ 1M) этих узлов и выполнить вычисления на оставшемся графе, добавив атрибуты к узлам и ребрам на основе отношений.
Однако кажется, что даже выполнение первого шага удаления узлов невозможно. То, что я пытался:
Цель: удалить все узлы, не являющиеся потомками узла 'a'.
nodesToKeep = nx.descendants(G, 'a')
Время стены: 40 с
nodesToDrop = [n for n in G if n not in set(nodesToKeep )]
Время стены: неясно,> 24 ч
Затем я бы удалил узлы, используя G.remove_nodes_from(nodesToDrop)
Проблема в том, что время выполнения даже понимание списка nodesToDrop само по себе настолько велико. Я завершил процесс через ~ 24 часа.
Разве это вообще нереально c использовать networkx для графов такого размера? Или есть какой-то другой подход, который мне следует принять?
Очень благодарен за любые ответы, которые могут направить меня в правильном направлении.