搜尋

首頁  >  問答  >  主體

python - 多层嵌套的if判断需要优化么?对性能影响大么?

class ThreadUrl(threading.Thread):
    def __init__(self, main_queue, source1_queue, source2_queue, source3_queue, source4_queue):
        threading.Thread.__init__(self)
        self.main_queue = main_queue
        self.source1_queue = source1_queue
        self.source2_queue = source2_queue
        self.source3_queue = source3_queue
        self.source4_queue = source4_queue

    def run(self):
        while True:
            # 从任务队列里取出任务
            sql_dict = self.main_queue.get()

            sql = sql_dict.get('a')
            if sql is not None:
                self.source1_queue.put(sql)
                self.main_queue.task_done()
            else:
                sql = sql_dict.get('b')
                if sql is not None:
                    self.source2_queue.put(sql)
                    self.main_queue.task_done()
                else:
                    sql = sql_dict.get('c')
                    if sql is not None:
                        self.source3_queue.put(sql)
                        self.main_queue.task_done()
                    else:
                        sql = sql_dict.get('d')
                        if sql is not None:
                            self.source4_queue.put(sql)
                            self.main_queue.task_done()

类似这种形式。

巴扎黑巴扎黑2802 天前3265

全部回覆(4)我來回復

  • 迷茫

    迷茫2017-04-18 09:51:41

    影響不大,清晰的結構比那點性能往往更總。想做優化的話完全可以透過第三方工具(Pypy等)。

    回覆
    0
  • 黄舟

    黄舟2017-04-18 09:51:41

    主要是醜呀,如此不優雅的程式碼​​。
    else 全部可以用它 continue 來代替。

    至於效能,你確定你要用 threading.Thread 這種執行緒方式?

    回覆
    0
  • 阿神

    阿神2017-04-18 09:51:41

    有點囉嗦,try裡寫正常程式碼,except裡處理sql異常

    回覆
    0
  • 黄舟

    黄舟2017-04-18 09:51:41

    首先考慮可讀性可維護性

    最後才考慮性能

    回覆
    0
  • 取消回覆