是否有一种方法以编程方式防止谷歌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设备,让它在我睡觉的时候模拟原始的用户交互(只是因为我手头有其他用例)。
有没有更好的办法?
由于连接按钮的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)
我尝试了之前答案中的代码,但它们不适合我。这里是重新连接的JavaScript代码。
let interval = setInterval(function(){
let ok = document.getElementById('ok');
if(ok != null){
console.log("Connect pushed");
ok.click();
}},60000)
您可以以同样的方式使用它(在浏览器的控制台上运行)来运行它。
如果您想停止脚本,可以输入clearInterval(interval),并希望再次运行setInterval(interval)。
我有一个问题与这些JavaScript函数:
function ClickConnect(){
console.log("Clicked on connect button");
document.querySelector("colab-connect-button").click()
}
setInterval(ClickConnect, 60000)
在实际点击按钮之前,他们会在控制台上打印“点击连接按钮”。
从这个问题的不同答案中可以看出,自从谷歌Colab推出以来,连接按钮的id已经改变了几次。将来也可能会改变。
如果你要复制这个问题的旧答案,它可能会说“点击连接按钮”,但它可能不会那样做。当然,如果单击不起作用,它将在控制台上打印一个错误,但是如果您可能不会意外地看到它呢?
所以你最好这样做:
function ClickConnect(){
document.querySelector("colab-connect-button").click()
console.log("Clicked on connect button");
}
setInterval(ClickConnect,60000)
你一定会看到它是否真的有效。
对我来说,以下是一些例子:
document.querySelector(“#连接”).click()或
document.querySelector(“colab-toolbar-button #连接”).click()或
document.querySelector(“colab-connect-button”).click ()
我们失误了。
我必须调整它们以适应以下情况:
版本1:
function ClickConnect(){
console.log("Connnect Clicked - Start");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
console.log("Connnect Clicked - End");
};
setInterval(ClickConnect, 60000)
版本2:
如果你想停止这个函数,下面是新代码:
var startClickConnect = function startClickConnect(){
var clickConnect = function clickConnect(){
console.log("Connnect Clicked - Start");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
console.log("Connnect Clicked - End");
};
var intervalId = setInterval(clickConnect, 60000);
var stopClickConnectHandler = function stopClickConnect() {
console.log("Connnect Clicked Stopped - Start");
clearInterval(intervalId);
console.log("Connnect Clicked Stopped - End");
};
return stopClickConnectHandler;
};
var stopClickConnect = startClickConnect();
为了停止,调用:
stopClickConnect();