如何使用更少的cpu?

2024-04-29 13:58:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个bot来立即接受follow请求。 我试着把它上传到Pythonywhere,这样它就可以全天候工作了,在免费的计划下,你每天只能使用100%的CPU,之后他们会把你放在一个他们称之为“柏油坑”的地方,在那里你可以使用更少的CPU(如果有的话)

这个机器人的问题是,它需要刷新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)

我将selenium与Chrome和pyvirtualdisplay结合使用,因为我不能使用headless浏览器。 请告诉我是否有任何方法可以最小化cpu使用,或者是否有更好的方法

在这里回答,或者在ig中回答dm@poortxbyy,如果你能提供帮助的话

提前谢谢


Tags: 方法browserbotbuttonsleepcpurefreshconfirm
2条回答

这方面的工作很少

  1. 只需增加每次刷新的时间,它不会立即接受后续请求,但您可以设置每2-3分钟更新一次的时间
  2. 这取决于您使用它的目的,使用API来完成这项工作,或者至少在接受它之前检查任何新请求
  3. 我知道使用无头不是你的选择,但这可能是唯一的其他选择,所以看看吧

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

  1. 你在用硒。换句话说,你正在模拟一个网络浏览器,这是一个昂贵的过程,因为它是,你期待它的主机在线免费
  2. 持续监测。也就是说,您在不断更新Selenium浏览器,这意味着您在反复重载第1点

一个显而易见的解决方案是减少每单位时间的更新次数。句号

另一个解决方案可能是完全放弃无限循环,构建bot,以便它知道何时更新。我可以想出多种方法来做到这一点,但关键是:你必须找到一种方法让机器人知道你有了一个新的跟随者,而不必使用Selenium,只需使用Selenium来单击按钮。可能只提取网站的HTML,并与字符串交互以快速(且便宜)从中检索信息。
或者更好,取决于你与什么样的社交媒体互动,使用它们的API检索新追随者的信息。除此之外,API甚至可能允许您自己接受请求。它归结为阅读文档并找出您的选择。一些API可能允许您设置Webhook,以便您的机器人可以休眠,直到您获得新的跟随者。快速查看Twitter's APIInstagram's图形API似乎很有希望。
换句话说,浏览器自动化通常感觉是最明显的解决方案,但更多情况下并非如此。您必须找到一种更直接地与可用数据交互的方法

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

相关问题 更多 >