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

类似这种形式。

巴扎黑
巴扎黑

répondre à tous(4)
迷茫

L'impact n'est pas grand, une structure claire est souvent plus importante que cette petite performance. Si vous souhaitez optimiser, vous pouvez utiliser des outils tiers (Pypy, etc.).

黄舟

Principalement parce que c’est moche, un code tellement inélégant.
else peut être remplacé par continuer.

En ce qui concerne les performances, êtes-vous sûr de vouloir utiliser threading.Thread ?

阿神

C'est un peu verbeux, écrivez du code normal dans try et gérez les exceptions SQL dans except

黄舟

Considérez d'abord la lisibilité et la maintenabilité

Considérez la performance en dernier

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal