lambda lst: reduce(lambda a,b:(b,b==a[0] and a[1]), lst, (lst[0], True))[1]
Следующее короткое замыкание:
all(itertools.imap(lambda i:yourlist[i]==yourlist[i+1], xrange(len(yourlist)-1)))
Я предполагаю, что вы используете ODBC здесь, потому что вы не указали точно, и это обычно используется ...
Нет, вы должны использовать новое соединение каждый раз, это стандартная практика что Microsoft рекомендует. Если вы используете ODBC и т. Д., Тогда окна управляют этими соединениями, кэшируют их для повторного использования и упрощают управление временем жизни.
Если вы используете статическое соединение, вы можете избавиться от него рано или закрыли его, не зная. В общем, это немного более неудобно и преждевременная оптимизация.
Чтобы развертывать высокопроизводительные приложения, вы часто должны использовать пул соединений. Однако, когда вы используете поставщик данных .NET Framework для ODBC, вам не нужно включать пул соединений, потому что провайдер управляет этим автоматически.
blockquote>См. OdbcConnection для Дополнительная информация.
В общем случае нет, вы не должны использовать одно соединение - все поставщики .NET ADO.NET поддерживают объединение пулов, а обычный шаблон - открывать / закрывать соединения по мере необходимости (в using
или try/finally
, чтобы убедиться, что соединение закрыто в случае исключения).
В однопоточном клиентском приложении вы можете избавиться от использования общего статического подключения, но вряд ли это вам даст любое измеримое преимущество в производительности - поэтому не делайте этого.
В любом другом приложении вам определенно не следует использовать общее статическое соединение, поскольку оно не является потокобезопасным.
ConnectionPool
, о котором вы говорите, на самом деле является просто сквозным подключением пула MSSQL , если он включен? Кроме того, он будет применять аналогичные действия для любой другой реализации базы данных, которая могла бы ? – Mike Perrenoud 11 October 2012 в 12:53