循环Python:在第一次迭代之前做一些事情

gue*_*tli 7 python optimization loops

我想优化.

简单解决方案

connection = get_db_connection()
for item in my_iterator:
    push_item_to_db(item, connection)
Run Code Online (Sandbox Code Playgroud)

退税:

get_db_connection()是慢的.如果my_iterator是空的,那么我想避免调用它.

"如果没有"解决方案

connection = None
for item in my_iterator:
    if connection is None:
        connection = get_db_connection()
    push_item_to_db(item, connection)
Run Code Online (Sandbox Code Playgroud)

退税:

如果有100k项my_iterator,则if connection is None调用100k次(尽管只需要一次).我想避免这种情况.

完美解决方案

  1. get_db_connection()如果迭代器为空,请不要调用
  2. if connection is None:每次迭代都不要无用地调用.

任何的想法?

vir*_*tor 5

你可以这样做:

connection = None
for item in my_iterator:
    if connection is None:
        connection = get_db_connection()
    push_item_to_db(item, connection)
Run Code Online (Sandbox Code Playgroud)

简单解决方案 不需要过度思考它.即使有100k操作,x is None也只是一个Python操作码的参考比较.与每次插入时发生的完整tcp往返+磁盘写入相比,您真的不需要优化它.