Усеченный медленный запрос входит в систему MySQL

Это связано с точкой, в которой d связан. Лямбда-функции все указывают на переменную d, а не на текущее значение , поэтому, когда вы обновляете d в следующей итерации, это обновление просматривается через все ваши функции.

Для более простого примера:

funcs = []
for x in [1,2,3]:
  funcs.append(lambda: x)

for f in funcs:
  print f()

# output:
3
3
3

Вы можете обойти это, добавив дополнительную функцию, например:

def makeFunc(x):
  return lambda: x

funcs = []
for x in [1,2,3]:
  funcs.append(makeFunc(x))

for f in funcs:
  print f()

# output:
1
2
3

Вы также можете зафиксировать область видимости внутри выражения лямбда

lambda bound_x=x: bound_x

. Однако в целом это не очень хорошая практика, поскольку вы изменили подпись своей функции.

14
задан Greg 23 February 2009 в 11:29
поделиться

3 ответа

Для усечения файла независимо, если это открыто запущенным приложением, сделайте:

> /var/logs/your.log

при Вашем приглашении оболочки.

22
ответ дан 1 December 2019 в 06:43
поделиться

Если это будет продолжающимся беспокойством, необходимо смотреть на logrotate, поскольку он может сделать это для Вас.

я не знал приблизительно echo > file.log, хотя это имеет смысл. Я всегда использовал cat /dev/null > file.log.

кроме того, нужно отметить, что очень важно не удалить файл журнала, который пишется в то, потому что программа, которая имеет его открытый, продолжит писать в файл. Очень трудный выяснить, почему всего Вашего пространства на жестком диске не стало!

5
ответ дан 1 December 2019 в 06:43
поделиться

Из здесь :

Вы можете переместить открытый файл, а затем указать mysqld очистить журналы, что откроет новый журнал.

shell> cd mysql-data-directory
shell> mv mysql.log mysql.old
shell> mv mysql-slow.log mysql-slow.old
shell> mysqladmin flush-logs
16
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: