gpt4 book ai didi

go - 多线程 HTTP 客户端请求的重构程序

转载 作者:行者123 更新时间:2023-12-01 22:45:26 26 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

2年前关闭。




Improve this question




我正在阅读 Google Places 包装器的文档,但它仅支持 Google Nearby Search。这真的不是一个巨大的瓶颈。

我的脚本执行附近搜索以查找该区域的 Place_ID,然后继续执行 Places Details 查询以从该特定 Google Maps 业务条目中获取所有数据。

这个 Places Details 查询是瓶颈所在,我希望能得到关于我编写的这个脚本的一些反馈。

看起来它不是多线程的,但是当我将“线程数”从 1 增加到 40 时,我的示例脚本运行时间从 40 秒下降到 12 秒。

我不得不做很多复制和粘贴,反复试验,才能让这个功能发挥作用。我非常感谢这里的帮助。

  • 为什么当我将线程数增加到 40 时它运行得更快?
  • 如何使用多线程加快速度?
  • package main

    import (
    "sync"
    "bufio"
    "os"
    "fmt"
    "net/http"
    "time"
    "io/ioutil"
    "strings"
    "log"
    "crypto/tls"
    "googlemaps.github.io/maps"
    "bytes"
    "encoding/json"
    )

    var threadCount = 40
    var wg sync.WaitGroup

    var api_key = "api_key"
    var top_cities_gps = "./top_cities_gps"
    var next_page_token = ""
    var business_types = []string{"accounting", "art_gallery"}

    var connector = &http.Transport{
    MaxIdleConns: threadCount,
    ring('\n')
    if err != nil {

    log.Fatalf("read file line error: %v", err)
    return
    }

    _ = line

    // alright! let's kick this up a notch, and start scraping!!! :D
    // looping all business types

    for i, s := range business_types {

    // now let's hit Google Places API for a NearbySearch!
    //
    searchPlaces("", s, strings.TrimSpace(line))

    }
    }
    }

    func main() {
    GoGoogle()
    }

    最佳答案

    threadCount名称错误。仅用于设置MaxIdleConns在 HTTP 传输中。根据文档:

     // MaxIdleConns controls the maximum number of idle (keep-alive)
    // connections across all hosts. Zero means no limit.

    所以当你增加 threadCount从 1 到 40,您增加了保持事件连接的限制。从这个用法看来,设置 threadCount到 0 会给你最好的结果。

    我建议你摆脱 threadCount完全地。

    关于go - 多线程 HTTP 客户端请求的重构程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60873258/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com