加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在Python中处理简单的工作流程

发布时间:2020-12-16 23:18:58 所属栏目:Python 来源:网络整理
导读:我正在处理一个代码,它接受一个数据集并运行一些算法. 用户上传数据集,然后选择将在此数据集上运行哪些算法,并创建如下工作流: workflow = {0: {'dataset': 'some dataset'},1: {'algorithm1': "parameters"},2: {'algorithm2': "parameters"},3: {'algorit
我正在处理一个代码,它接受一个数据集并运行一些算法.

用户上传数据集,然后选择将在此数据集上运行哪些算法,并创建如下工作流:

workflow = 
{0: {'dataset': 'some dataset'},1: {'algorithm1': "parameters"},2: {'algorithm2': "parameters"},3: {'algorithm3': "parameters"}
}

这意味着我将工作流[0]作为我的数据集,我将在其上运行algorithm1.然后,我将把它的结果,我将运行algorithm2这个结果作为我的新数据集.我将会采用新的结果并运行algorithm3.它直到最后一个项目,直到这个工作流没有长度限制.

我在Python中写这个.你可以提出一些处理这个工作流的策略吗?

解决方法

你想在一些数据集上运行管道.这听起来像是减少操作(在某些语言中折叠).不需要任何复杂的东西:
result = reduce(lambda data,(aname,p): algo_by_name(aname)(p,data),workflow)

这假定工作流程看起来像(面向文本,因此您可以使用YAML / JSON加载它):

workflow = ['data',('algo0',{}),('algo1',{'param': value}),… ]

而且你的算法看起来像:

def algo0(p,data):
    …
    return output_data.filename

algo_by_name取名,并给你一个算法功能;例如:

def algo_by_name(name):
    return {'algo0': algo0,'algo1': algo1,}[name]

(旧编辑:如果你想要一个写入管道的框架,可以使用Ruffus.它就像一个make工具,但是具有进度支持和漂亮的流程图.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读