首页 新闻 搜索 专区 学院

python大神,帮忙看看有什么好的优化方法!

0
悬赏园豆:10 [已解决问题] 解决于 2018-04-28 17:07

大神帮忙看看, 这种if嵌套怎么优化。万分感谢,万分感谢,万分感谢。

WrYcF的主页 WrYcF | 初学一级 | 园豆:19
提问于:2018-04-28 15:56
< >
分享
最佳答案
0

直接说需求吧....

收获园豆:10
北方姆Q | 小虾三级 |园豆:858 | 2018-04-28 16:03

  大神,其实这种写法也是可也完成业务的, 但是就是看着这么多的if感觉有点乱了, 所以请教大神,帮忙优化优化, 不写这么多if也可以完成相同的操作, 

WrYcF | 园豆:19 (初学一级) | 2018-04-28 16:05

@WrYcF: 我的意思是你大体描述下需求,这么写肯定可以优化,好像是分三步取值然后干什么,具体流程是什么描述下

北方姆Q | 园豆:858 (小虾三级) | 2018-04-28 16:09

@北方姆Q: 大神,流程是这样的。。。

流程里  一共8个任务    任务顺序执行   其中有一个任务执行失败  整个流程失败  任务全部成功 流程才成功

WrYcF | 园豆:19 (初学一级) | 2018-04-28 16:13

@WrYcF: 

#!/usr/bin/env python
# -*- coding:utf8 -*-
# __author__ = '北方姆Q'


def worker(task_step, task_id):
    step_obj = Step.objects.get(task_step=task_step, task_id=int(task_id))
    add_step(step_obj)        # add_step还是你的原本处理函数,要有布尔返回值
    return True if step_obj.status == '2' else False


def func(request):         # 你现在要优化的这个函数
    # 这是你每一个对应的tack_step关系,虽然我不知道你是怎么对应的
    t1 = (11, 12, 21, 22, 31, 32, 41, 42)
    task_id = request.POST.get('task_id')

    for index, value in enumerate(t1):
        ret = worker(value, task_id)
        if not ret:
            break

大体意思就是这样

北方姆Q | 园豆:858 (小虾三级) | 2018-04-28 16:44

@北方姆Q: 感谢大神, 万分感谢

WrYcF | 园豆:19 (初学一级) | 2018-04-28 17:07
其他回答(1)
0

按照你这个业务,个人觉得可以这样子优化:把上述的7个步骤写道一个事务里面去操做或者用存储过程去完成,代码不要搞这么if分支,很繁琐。

HI_Hub_MI | 园豆:215 (菜鸟二级) | 2018-04-28 16:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册