【问题标题】:Need to File Lock Selenium Webdriver When Threading?线程时需要文件锁定 Selenium Webdriver?
【发布时间】:2016-03-16 13:54:27
【问题描述】:

我有很多线程像这样启动 phantomJS 或 Chromedriver:

 Driver= webdriver.PhantomJS('C:\phantomjs.exe',desired_capabilities=dcap, service_args=service_args)

Driver= webdriver.Chrome(executable_path='C:/chromedriver.exe', chrome_options=chrome_options)

这似乎是一个愚蠢的问题,但我试图找出线程很少和很少发生静默失败的原因,这是我能看到的唯一一段没有太多异常处理的代码。

如果我有 100 多个线程同时运行它会导致问题吗?如果我真的在修改某些东西,我只使用过文件锁定。当多个线程只为一个 webdriver 使用同一个文件时,就不需要它了……对吧?

【问题讨论】:

    标签: python multithreading selenium web-scraping


    【解决方案1】:

    根据:Is Selenium WebDriver thread safe?

    WebDriver 不是线程安全的。话虽如此,如果你可以序列化 访问底层驱动程序实例,您可以在 不止一个线程。这是不可取的。你/可以/另一方面 为每个线程手动实例化一个 WebDriver 实例。

    ... 这表明您的任务越并发,并且您对失败的容忍度越低,您就越需要坚持每个线程的单个驱动程序实例。我认为文件锁定在这里没有任何用处。

    另一个问题是在单台机器上运行浏览器实例相对昂贵,所以你很幸运能够在不降低性能的情况下运行 10 个实例/线程。

    这种安排可以正常工作,但您永远无法同时运行 100 多个线程(无论如何在实践中都不可能这样做)。 5 或 10 应该没问题,我怀疑你的吞吐量会不会更少。

    如果您的需求不止于此,您最好使用 Selenium Grid 和多个节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多