一个小玩具--基于 DAG 图的任务依赖调度

2018-02-23 11:59:09 +08:00
 owenliang

task_schedule

项目地址

点我

项目介绍

基于 DAG 图的调度 DEMO,基于图数据结构与拓扑序列理论,实现一个任务调度类。

输入

    /*
     *
     *             J O B 1
     *          /    \       \
     *        V      V      V
     *     JOB2  JOB3  JOB5
     *         \     /
     *         V   V
     *         JOB4
     */

输出

---------------
任务名:job1
是否完成:NO
(当前)依赖这些任务: job2  job3  job5 
(当前)被这些任务依赖:
任务名:job2
是否完成:NO
(当前)依赖这些任务: job4 
(当前)被这些任务依赖: job1 
任务名:job3
是否完成:NO
(当前)依赖这些任务: job4 
(当前)被这些任务依赖: job1 
任务名:job4
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: job2  job3 
任务名:job5
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
---------------
<<<<<<<<< 可执行待办任务列表:  job4  job5 
>>>>>>>>>job4 被执行
---------------
任务名:job1
是否完成:NO
(当前)依赖这些任务: job2  job3  job5 
(当前)被这些任务依赖:
任务名:job2
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
任务名:job3
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
任务名:job4
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: job2  job3 
任务名:job5
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
---------------
>>>>>>>>>job5 被执行
---------------
任务名:job1
是否完成:NO
(当前)依赖这些任务: job2  job3 
(当前)被这些任务依赖:
任务名:job2
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
任务名:job3
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
任务名:job4
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: job2  job3 
任务名:job5
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
---------------
<<<<<<<<< 可执行待办任务列表:  job2  job3 
>>>>>>>>>job2 被执行
---------------
任务名:job1
是否完成:NO
(当前)依赖这些任务: job3 
(当前)被这些任务依赖:
任务名:job2
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
任务名:job3
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
任务名:job4
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: job3 
任务名:job5
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
---------------
>>>>>>>>>job3 被执行
---------------
任务名:job1
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:job2
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
任务名:job3
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
任务名:job4
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:job5
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: job1 
---------------
<<<<<<<<< 可执行待办任务列表:  job1 
>>>>>>>>>job1 被执行
---------------
任务名:job1
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:job2
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:job3
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:job4
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:job5
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
---------------
2758 次点击
所在节点    C
5 条回复
dakb
2018-02-23 16:11:33 +08:00
消灭 0 回复惨案吧。。
owenliang
2018-02-23 16:18:49 +08:00
@dakb 666
lovejoy
2018-02-23 17:44:38 +08:00
@owenliang 你们的用途是?
owenliang
2018-02-23 18:20:00 +08:00
@lovejoy 比如 hadoop 多轮计算。
owenliang
2018-03-01 15:54:31 +08:00
继续完善了一轮,增加了多进程调度: https://github.com/owenliang/task_schedule

后续会支持 YAML 配置拓扑,提供一个命令行工具供使用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/431860

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX