更高层次的拓扑排序。

whatwhen的Python项目详细描述


whatwhen是一种高级拓扑排序,是 解析依赖项并计算 功能和其他东西。

基本拓扑排序:

tasks = [
    {
        'name: 'drive',
        'dependencies': ['car'],
    }, {
        'name': 'car',
        'dependencies': ['wheels', 'gas'],
    }, {
        'name': 'wheels',
        'dependencies': 'rubber',
    }, {
        'name': 'gas',
    }, {
        'name': 'rubber',
    },
]

whatwhen.sort(items)

使用合同(需求和规定)进行拓扑排序:

tasks = [
    {
        'name': 'drive',
        'needs': ['car', 'gas'],
    }, {
        'name': 'fill tank',
        'provides': ['gas'],
    }, {
        'name': 'rent a car',
        'provides': ['car'],
        'dependencies': ['money'],
    }, {
        'name': 'money'
    }
]

whatwhen.sort(items)

当你不知道具体是什么的时候,需求和供给是有用的 功能(或系统或模块或其他)将提供 必要的数据或前提条件,但你知道这些数据 先决条件是。这可能发生在大型系统或 你不能完全控制。

除了词典之外,任务的元数据还可以添加到 功能:

def one():
    pass

def two():
    pass

one.dependencies = ['two']

whatwhen.sort([one, two])

什么时候返回已排序的原始函数(或字典) 顺序,而不仅仅是节点名的排序列表,所以 比原始拓扑排序更容易使用。

什么时候让tarjan 模块完成了大部分的重负载,所以实际上只有大约40个 此模块的包装代码行。由你决定是否 你宁愿建在什么地方或平原上。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
返回数组无效的java方法   异步Java CompletableFuture获取其请求   java是否可以像RDBMS那样使用视图?   java如何在屏幕上只运行一个片段?   java无法从Vertex jdbc查询中获取结果   java从jtable获取对象的正确方法   java Spring 3数据设备替代方案   Java BigDecimal:四舍五入到客户首选的数字和增量   JAVA主窗口没有出现,我必须左键单击主窗口。java并单击run查看它   Eclipse RCP中的java进程自定义设备事件   JavaEclipse一次又一次地构建代码(没有任何更改)?   java如何实现对象合并