首页 > 解决方案 > 如何使用更少的cpu?

问题描述

我写了一个机器人来立即接受关注请求。我尝试将它上传到 pythonanywhere,以便它可以 24/7 全天候工作,并且使用免费计划,你每天只允许 100 次 100% 的 CPU 使用率,之后他们把你放在他们所谓的 tarpit 中,在那里你使用很多如果有的话,更少的cpu。

bot 的问题是它需要刷新 chrome 来检查新请求,并且它会在几秒钟内吃掉所有的 cpu,之后几乎不会继续运行。

这是我的意思的代码部分:

while True:
        try:
            confirm_buttons = browser.find_elements_by_xpath("//button[text()='Confirm']")
            for confirm_button in confirm_buttons:
                confirm_button.click()
                sleep(5)
                print('found')
        except NoSuchElementException:
            print('none')
            browser.refresh()
            print('refreshed')
            sleep(5)
        finally:
            browser.refresh()
            print("refreshing")
            sleep(5)

我在 Chrome 和 pyvirtualdisplay 中使用 selenium,因为我不能使用无头浏览器。 请告诉我是否有任何方法可以最大程度地减少 cpu 的使用,或者是否有更好的方法来做到这一点

如果您可以提供帮助,请在此处回答或在 ig 中 dm @poortxbyy 。

提前致谢。

标签: pythonseleniumcpucpu-usagepythonanywhere

解决方案


您尝试实施的方法存在多个问题。即:

  1. 您正在使用硒。换句话说,您正在模拟一个 Web 浏览器——这实际上是一个昂贵的过程——并且您希望免费在线托管它。
  2. 持续监控。即,您不断更新 Selenium 浏览器,这意味着您反复重载第 1 点。

一个明显的解决方案是减少每单位时间的更新次数。时期。

另一种解决方案可能是完全放弃无限循环并构建机器人,以便它知道何时更新。我可以想到多种方法来做到这一点,但重点是:你必须找到一种方法让机器人知道你有一个新的追随者,而不必使用 Selenium,并且只使用 Selenium 来点击按钮。也许通过仅提取站点的 HTML 并与字符串交互以快速(且廉价)从中检索信息。
或者甚至更好,这取决于您正在与之交互的社交媒体,使用他们的 API 来检索有关新关注者的信息。最重要的是,API 甚至可能允许您自己接受请求。归结为阅读文档并找出您的选择。某些 API 可能允许您设置 webhook,以便您的机器人可以休眠,直到您获得新的关注者。快速浏览一下Twitter 的 APIInstagram 的Graph API 似乎很有希望。
换句话说,浏览器自动化通常感觉是最明显的解决方案,但更多时候并非如此。您必须找到一种更直接地与您可用的数据进行交互的方法。

此外,不要忘记社交媒体网站可能会检测到异常行为并阻止您的帐户以保护它。


推荐阅读