是否有一种方法以编程方式防止谷歌Colab超时断开?
笔记本电脑自动断开连接的情况如下:
谷歌Colab笔记本的空闲超时为90分钟,绝对超时为12小时。这意味着,如果用户没有与他的谷歌Colab笔记本进行交互超过90分钟,其实例将自动终止。此外,Colab实例的最大生存期为12小时。
自然,我们希望自动地从实例中挤出最大的值,而不必不断地手动与它交互。这里我将假设常见的系统需求:
Ubuntu 18.04 LTS (Bionic Beaver), Windows 10或Mac操作系统
对于基于linux的系统,使用流行的桌面环境,如GNOME 3或Unity
Firefox或Chromium浏览器
我应该在这里指出,这样的行为并不违反谷歌Colab的使用条款,尽管根据他们的常见问题解答,这是不鼓励的(简而言之:从道德上讲,如果你真的不需要它,那么用完所有的gpu是不可以的)。
我目前的解决方案非常愚蠢:
首先,我把屏保关掉,这样我的屏幕就一直开着。
我有一个Arduino板,所以我只是把它变成了一个橡胶鸭子USB设备,让它在我睡觉的时候模拟原始的用户交互(只是因为我手头有其他用例)。
有没有更好的办法?
你也可以使用Python来按方向键。我也在下面的代码中添加了一点随机性。
from pyautogui import press, typewrite, hotkey
import time
from random import shuffle
array = ["left", "right", "up", "down"]
while True:
shuffle(array)
time.sleep(10)
press(array[0])
press(array[1])
press(array[2])
press(array[3])
由于连接按钮的id现在更改为“coab -connect-button”,下面的代码可以用来继续单击按钮。
function ClickConnect(){
console.log("Clicked on connect button");
document.querySelector("colab-connect-button").click()
}
setInterval(ClickConnect,60000)
如果还是不行,那就按照下面的步骤来做:
右键单击连接按钮(在colab的右上角)
点击inspect
获取按钮的HTML id并在以下代码中进行替换
function ClickConnect(){
console.log("Clicked on connect button");
document.querySelector("Put ID here").click() // Change id here
}
setInterval(ClickConnect,60000)
从2021年3月起,这些方法都不起作用,因为谷歌增加了一个CAPTCHA按钮,一段时间后随机弹出。
在此之前,解决方案非常简单,不需要任何JavaScript。只需要在底部创建一个新单元格,内容如下:
while True:pass
现在将单元格保持在运行序列中,这样无限循环就不会停止,从而使会话保持活动状态。
老方法:
设置JavaScript间隔,每60秒单击一次连接按钮。
用Ctrl+Shift+I打开开发者设置(在您的web浏览器中),然后单击控制台选项卡,并在控制台提示符上键入此选项卡。(mac按Option+Command+I键)
function ConnectButton(){
console.log("Connect pushed");
document.querySelector("#top-toolbar > colab-connectbutton").shadowRoot.querySelector("#connect").click()
}
setInterval(ConnectButton,60000);