python - 多层嵌套的if判断需要优化么?对性能影响大么?
巴扎黑
巴扎黑 2017-04-18 09:49:41
0
4
3279
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()

类似这种形式。

巴扎黑
巴扎黑

全員に返信(4)
迷茫

影響は大きくありません。多くの場合、その小さなパフォーマンスよりも明確な構造の方が重要です。最適化したい場合は、サードパーティのツール (Pypy など) を使用できます。

いいねを押す +0
黄舟

主な理由は、コードが醜く、洗練されていないからです。
else は continue に置き換えることができます。

パフォーマンスに関しては、threading.Thread を使用してもよろしいですか?

いいねを押す +0
阿神

これは少し冗長です。try で通常のコードを記述し、SQL 例外を例外で処理します。

いいねを押す +0
黄舟

読みやすさと保守性を最初に考慮する

パフォーマンスは最後に考慮してください

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート