From 7a5aaa8d6152e20a0c32a0c8bb60d8c795fc8c8f Mon Sep 17 00:00:00 2001 From: wfjsw Date: Mon, 24 Aug 2020 13:16:53 +0800 Subject: [PATCH] group list batch --- client/client.go | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/client/client.go b/client/client.go index aaceddcf..a2c4c9eb 100644 --- a/client/client.go +++ b/client/client.go @@ -630,18 +630,25 @@ func (c *QQClient) GetGroupList() ([]*GroupInfo, error) { } r := rsp.([]*GroupInfo) wg := sync.WaitGroup{} - wg.Add(len(r)) - for _, group := range r { - go func(g *GroupInfo, wg *sync.WaitGroup) { - defer wg.Done() - m, err := c.GetGroupMembers(g) - if err != nil { - return - } - g.Members = m - }(group, &wg) + batch := 50 + for i := 0; i < len(r); i += batch { + k := i + batch + if k > len(r) { + k = len(r) + } + wg.Add(k - i) + for j := i; j < k; j++ { + go func(g *GroupInfo, wg *sync.WaitGroup) { + defer wg.Done() + m, err := c.GetGroupMembers(g) + if err != nil { + return + } + g.Members = m + }(r[j], &wg) + } + wg.Wait() } - wg.Wait() return r, nil }