python的异步任务调度程序和运行程序
asynctasks的Python项目详细描述
基于异步的任务调度程序。允许指定最大并发性和粒度执行结果将打印为甘特图
示例用法
fromasynctasks.executorimportExecutorfromasynctasks.executionplanimportExecutionPlanimportasyncio#create an array of taskstasks_dict_array=[{"dependencies":[],"name":"task0"},{"dependencies":[0],"name":"task1"},{"dependencies":[1],"name":"task2"},{"dependencies":[0],"name":"task3"},{"dependencies":[],"name":"task4"},{"dependencies":[],"name":"task5"}]#define an async function that should be executed for each taskasyncdefprint_task(loop,task):print("Executing task {}".format(task))awaitasyncio.sleep(0.1)#create an execution plan for the tasksplan=ExecutionPlan().from_dict_array(tasks_dict_array)print("\nBEFORE EXECUTION\n{}".format(plan))#execute the plan with print_task function and max_concurrency as 2Executor(plan,2,0.01,print_task).trigger_execution()print("\nAFTER EXECUTION\n{}".format(plan.as_gantt()))
样本输出
BEFOREEXECUTIONtask0Readytask1task2task3task4Readytask5ReadyExecutingtask{'dependencies':[],'name':'task0','start_time':1497528994.1246588}Executingtask{'dependencies':[],'name':'task4','start_time':1497528994.1246588}Executingtask{'dependencies':[0],'name':'task1','start_time':1497528994.236074}Executingtask{'dependencies':[0],'name':'task3','start_time':1497528994.2370954}Executingtask{'dependencies':[1],'name':'task2','start_time':1497528994.340769}Executingtask{'dependencies':[],'name':'task5','start_time':1497528994.3417716}AFTEREXECUTION....................................................................................................task0...............................task1.............................task2................................task3.............................task4...............................task5...............................