@@ -195,6 +195,10 @@ func (o *GridOptimizer) Run(executor Executor, configJson []byte) (map[string][]
195
195
196
196
var taskC = make (chan BacktestTask , 10000 )
197
197
198
+ var bar = pb .Full .New (cap (taskC ))
199
+ bar .SetTemplateString (`{{ string . "log" | green}} | {{counters . }} {{bar . }} {{percent . }} {{etime . }} {{rtime . "ETA %s"}}` )
200
+
201
+ var taskCnt int64 = 0
198
202
var app = func (configJson []byte , next func (configJson []byte ) error ) error {
199
203
var labels = copyLabels (o .ParamLabels )
200
204
var params = copyParams (o .CurrentParams )
@@ -203,6 +207,8 @@ func (o *GridOptimizer) Run(executor Executor, configJson []byte) (map[string][]
203
207
Params : params ,
204
208
Labels : labels ,
205
209
}
210
+ taskCnt ++
211
+ bar .SetTotal (taskCnt )
206
212
return nil
207
213
}
208
214
@@ -221,20 +227,17 @@ func (o *GridOptimizer) Run(executor Executor, configJson []byte) (map[string][]
221
227
}
222
228
223
229
ctx := context .Background ()
224
- if err := wrapper (configJson ); err != nil {
225
- return nil , err
226
- }
227
-
228
- bar := pb .Full .Start (len (taskC ))
229
- bar .SetTemplateString (`{{ string . "log" | green}} | {{counters . }} {{bar . }} {{percent . }} {{etime . }} {{rtime . "ETA %s"}}` )
230
+ var taskGenErr error
231
+ go func () {
232
+ taskGenErr = wrapper (configJson )
233
+ close (taskC ) // this will shut down the executor
234
+ }()
230
235
231
236
resultsC , err := executor .Run (ctx , taskC , bar )
232
237
if err != nil {
233
238
return nil , err
234
239
}
235
240
236
- close (taskC ) // this will shut down the executor
237
-
238
241
for result := range resultsC {
239
242
bar .Increment ()
240
243
@@ -265,7 +268,11 @@ func (o *GridOptimizer) Run(executor Executor, configJson []byte) (map[string][]
265
268
})
266
269
}
267
270
268
- return metrics , err
271
+ if taskGenErr != nil {
272
+ return metrics , taskGenErr
273
+ } else {
274
+ return metrics , err
275
+ }
269
276
}
270
277
271
278
func reformatJson (text string ) string {
0 commit comments