Size: a a a

2020 April 29

AK

Anton Kucherov in Go-go!
Вот такой вопрос. Если runtime.GOMAXPROCS(1), будут ли отлавливаться ДатаРейсы  при запуске go test -race??
источник

DP

Daniel Podolsky in Go-go!
Не должны
источник

VK

Vladimir Kudryavtsev in Go-go!
Всем привет, подскажите, есть вот такой код который крутиться в бесконечном цикле. Суть в том что я хочу замерить сколько времени выполняется функция и экспозить это в прометей.
Но что то мне подсказывает что timerElapsedFullProcessData принимае свое знаечение до того как все гоурутины заканчивают свою работу. Потому что значения очень маленькие у этой пемеременной.
for {
 timerStartFullCycle := time.Now()
 for i := 0; i < filesCount; i++ {
   wg.Add(1)
   go func() {
     /...code.../
     }
   }()
 }
 for _, file := range files {
   workerInput <- file
 }
 wg.Wait()
 timerElapsedFullProcessData := time.Since(timerStartFullProcessData)
}
источник

AK

Anton Kucherov in Go-go!
Daniel Podolsky
Не должны
Вот это офигенно, у меня есть тут кусок легаси в котором в main runtime.GOMAXPROCS(1). А дальше эта штука запускает WebSocket сервер и обрататывает сотни тысяч соединений 😅 Ну и сообщения переодически не приходят клиентам...
источник

ЗА

Заур Ашурбеков... in Go-go!
Vladimir Kudryavtsev
Всем привет, подскажите, есть вот такой код который крутиться в бесконечном цикле. Суть в том что я хочу замерить сколько времени выполняется функция и экспозить это в прометей.
Но что то мне подсказывает что timerElapsedFullProcessData принимае свое знаечение до того как все гоурутины заканчивают свою работу. Потому что значения очень маленькие у этой пемеременной.
for {
 timerStartFullCycle := time.Now()
 for i := 0; i < filesCount; i++ {
   wg.Add(1)
   go func() {
     /...code.../
     }
   }()
 }
 for _, file := range files {
   workerInput <- file
 }
 wg.Wait()
 timerElapsedFullProcessData := time.Since(timerStartFullProcessData)
}
😁 Возрадуйтесь же, ибо, если wg.Done исполняется в момент завершения горутины, то Ваше дитё во истинну работает столь быстро, сколь Вы даже не можете принять этого
источник

ЗА

Заур Ашурбеков... in Go-go!
А так чекните количество файлов, может их просто 0
источник

E

Edgar in Go-go!
Ребят, кто ни будь нашел применение этому?

https://github.com/containous/yaegi

Просто любопытно, в чем задача и может она что-то полезное делает)
источник

RS

Roman Sharkov in Go-go!
Vladimir Kudryavtsev
Всем привет, подскажите, есть вот такой код который крутиться в бесконечном цикле. Суть в том что я хочу замерить сколько времени выполняется функция и экспозить это в прометей.
Но что то мне подсказывает что timerElapsedFullProcessData принимае свое знаечение до того как все гоурутины заканчивают свою работу. Потому что значения очень маленькие у этой пемеременной.
for {
 timerStartFullCycle := time.Now()
 for i := 0; i < filesCount; i++ {
   wg.Add(1)
   go func() {
     /...code.../
     }
   }()
 }
 for _, file := range files {
   workerInput <- file
 }
 wg.Wait()
 timerElapsedFullProcessData := time.Since(timerStartFullProcessData)
}
не

for i := 0; i < filesCount; i++ {
   wg.Add(1)


а

wg.Add(filesCount)
for i := 0; i < filesCount; i++ {
источник

DK

Daniil Kostin in Go-go!
Edgar
Ребят, кто ни будь нашел применение этому?

https://github.com/containous/yaegi

Просто любопытно, в чем задача и может она что-то полезное делает)
сам не применял, но думаю задача в подключении изменяемых скриптах поведения.
Обычно для этой цели более скриптовые языки используются, типа js
Например поведение монстра в Quake 2 :)
источник

DK

Daniil Kostin in Go-go!
Roman Sharkov
не

for i := 0; i < filesCount; i++ {
   wg.Add(1)


а

wg.Add(filesCount)
for i := 0; i < filesCount; i++ {
можно и по одной добавлять.
источник

RS

Roman Sharkov in Go-go!
Daniil Kostin
можно и по одной добавлять.
зачем?
источник

DK

Daniil Kostin in Go-go!
Roman Sharkov
зачем?
ну это другой вопрос, но это не ошибка
источник

RS

Roman Sharkov in Go-go!
Daniil Kostin
ну это другой вопрос, но это не ошибка
это дурная привычка. Зачем 10 раз дёргать вызов функции на синхронизированном объекте, если мы заранее знаем количество
источник

RS

Roman Sharkov in Go-go!
Vladimir Kudryavtsev
Всем привет, подскажите, есть вот такой код который крутиться в бесконечном цикле. Суть в том что я хочу замерить сколько времени выполняется функция и экспозить это в прометей.
Но что то мне подсказывает что timerElapsedFullProcessData принимае свое знаечение до того как все гоурутины заканчивают свою работу. Потому что значения очень маленькие у этой пемеременной.
for {
 timerStartFullCycle := time.Now()
 for i := 0; i < filesCount; i++ {
   wg.Add(1)
   go func() {
     /...code.../
     }
   }()
 }
 for _, file := range files {
   workerInput <- file
 }
 wg.Wait()
 timerElapsedFullProcessData := time.Since(timerStartFullProcessData)
}
может не

timerElapsedFullProcessData := time.Since(timerStartFullProcessData)

а

timerElapsedFullProcessData := time.Since(timerStartFullCycle)

?
источник

VK

Vladimir Kudryavtsev in Go-go!
Roman Sharkov
может не

timerElapsedFullProcessData := time.Since(timerStartFullProcessData)

а

timerElapsedFullProcessData := time.Since(timerStartFullCycle)

?
Да в примере есть ошибка с именем, но в коде все ок
источник

RS

Roman Sharkov in Go-go!
Vladimir Kudryavtsev
Да в примере есть ошибка с именем, но в коде все ок
кстати, зачем тут вообще WaitGroup?
источник

RS

Roman Sharkov in Go-go!
Vladimir Kudryavtsev
Всем привет, подскажите, есть вот такой код который крутиться в бесконечном цикле. Суть в том что я хочу замерить сколько времени выполняется функция и экспозить это в прометей.
Но что то мне подсказывает что timerElapsedFullProcessData принимае свое знаечение до того как все гоурутины заканчивают свою работу. Потому что значения очень маленькие у этой пемеременной.
for {
 timerStartFullCycle := time.Now()
 for i := 0; i < filesCount; i++ {
   wg.Add(1)
   go func() {
     /...code.../
     }
   }()
 }
 for _, file := range files {
   workerInput <- file
 }
 wg.Wait()
 timerElapsedFullProcessData := time.Since(timerStartFullProcessData)
}
мне кажется или files это канал?
источник

VK

Vladimir Kudryavtsev in Go-go!
Мне надо что бы после того как все файлы распарсятся, спать какое то время. И вот тут у меня пока проблема я не знаю как правильно реализовать, канал я закрыть не могу, так как воркер должен бесконечно читать. И как понять что можно идти дальше я не придумал, но похоже waitgroup не выбор, потому что там не когда не заканчивается работа
источник

VM

Vladislav Milenin in Go-go!
Vladimir Kudryavtsev
Мне надо что бы после того как все файлы распарсятся, спать какое то время. И вот тут у меня пока проблема я не знаю как правильно реализовать, канал я закрыть не могу, так как воркер должен бесконечно читать. И как понять что можно идти дальше я не придумал, но похоже waitgroup не выбор, потому что там не когда не заканчивается работа
зачем спать?
источник

DY

Dima Yatsenko in Go-go!
кто готов подключить апи xero -есть почасовка
источник