Google Colab 会话超时
Google Colab session timeout
在FAQs中提到
Virtual machines are recycled when idle for a while, and have a maximum lifetime enforced by the system.
最大生命周期和空闲时间是固定的还是可变的?有什么方法可以预测吗?
如果关闭浏览器,则为 90 分钟。如果您保持浏览器打开状态,则需要 12 小时。此外,如果您关闭浏览器时代码单元格为 运行,如果同一单元格尚未完成,则当您重新打开浏览器时它仍将是 运行(当前正在执行的单元格保持 运行 即使在浏览器关闭后)
问题:
我必须训练我的模型几个小时,但如果我不经常点击,google colab 会在 30 分钟后自动断开连接,导致所有数据丢失。
解决方案:
步骤:
- 通过键入
Ctrl+ Shift + i
打开检查器视图,然后单击顶部的控制台选项卡。
- 将以下代码片段粘贴到控制台底部,然后按回车键
function ClickConnect(){
console.log("Working");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
}
setInterval(ClickConnect,60000)
- 相信我,这就是所有人。
上面的代码将继续点击页面并防止它断开连接。
下图显示了上述步骤的控制台视图:-
或者您也可以尝试以下代码段:
interval = setInterval(function() {
console.log("working")
var selector = "#top-toolbar > colab-connect-button"
document.querySelector(selector).shadowRoot.querySelector("#connect").click()
setTimeout(function() {
document.querySelector(selector).shadowRoot.querySelector("#connect").click()
}, 1000)
}, 60*1000)
另一种克服会话超时的方法是 运行 python 中的自动点击脚本(特别是如果您不打算在 运行 在 colab 中运行代码时使用计算机)
代码如下:(一定要先pip install pynput)
import threading
from pynput.mouse import Button, Controller
from pynput.keyboard import Listener, KeyCode
delay = 20 #this is the delay of the autoclick (20 seconds here)
button = Button.left
start_stop_key = KeyCode(char='s')
exit_key = KeyCode(char='e')
class ClickMouse(threading.Thread):
def __init__(self, delay, button):
super(ClickMouse, self).__init__()
self.delay = delay
self.button = button
self.running = False
self.program_running = True
def start_clicking(self):
self.running = True
def stop_clicking(self):
self.running = False
def exit(self):
self.stop_clicking()
self.program_running = False
def run(self):
while self.program_running:
while self.running:
mouse.click(self.button)
time.sleep(self.delay)
time.sleep(0.1)
mouse = Controller()
click_thread = ClickMouse(delay, button)
click_thread.start()
def on_press(key):
if key == start_stop_key:
if click_thread.running:
click_thread.stop_clicking()
else:
click_thread.start_clicking()
elif key == exit_key:
click_thread.exit()
listener.stop()
with Listener(on_press=on_press) as listener:
listener.join()
运行 命令行上的脚本 window,然后按 "s" 键开始自动点击,按 "e" 键退出,然后将鼠标指针停留在代码单元格(通常会在一定延迟后点击)。
改进@Ashish Anand 的回答
开始时使用此代码:
function ClickConnect(){
console.log("Working");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
}
var clicker = setInterval(ClickConnect,60000);
以及需要停止时的如下代码:
clearInterval(clicker);
在FAQs中提到
Virtual machines are recycled when idle for a while, and have a maximum lifetime enforced by the system.
最大生命周期和空闲时间是固定的还是可变的?有什么方法可以预测吗?
如果关闭浏览器,则为 90 分钟。如果您保持浏览器打开状态,则需要 12 小时。此外,如果您关闭浏览器时代码单元格为 运行,如果同一单元格尚未完成,则当您重新打开浏览器时它仍将是 运行(当前正在执行的单元格保持 运行 即使在浏览器关闭后)
问题: 我必须训练我的模型几个小时,但如果我不经常点击,google colab 会在 30 分钟后自动断开连接,导致所有数据丢失。
解决方案:
步骤:
- 通过键入
Ctrl+ Shift + i
打开检查器视图,然后单击顶部的控制台选项卡。 - 将以下代码片段粘贴到控制台底部,然后按回车键
function ClickConnect(){
console.log("Working");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
}
setInterval(ClickConnect,60000)
- 相信我,这就是所有人。 上面的代码将继续点击页面并防止它断开连接。
下图显示了上述步骤的控制台视图:-
或者您也可以尝试以下代码段:
interval = setInterval(function() {
console.log("working")
var selector = "#top-toolbar > colab-connect-button"
document.querySelector(selector).shadowRoot.querySelector("#connect").click()
setTimeout(function() {
document.querySelector(selector).shadowRoot.querySelector("#connect").click()
}, 1000)
}, 60*1000)
另一种克服会话超时的方法是 运行 python 中的自动点击脚本(特别是如果您不打算在 运行 在 colab 中运行代码时使用计算机)
代码如下:(一定要先pip install pynput)
import threading
from pynput.mouse import Button, Controller
from pynput.keyboard import Listener, KeyCode
delay = 20 #this is the delay of the autoclick (20 seconds here)
button = Button.left
start_stop_key = KeyCode(char='s')
exit_key = KeyCode(char='e')
class ClickMouse(threading.Thread):
def __init__(self, delay, button):
super(ClickMouse, self).__init__()
self.delay = delay
self.button = button
self.running = False
self.program_running = True
def start_clicking(self):
self.running = True
def stop_clicking(self):
self.running = False
def exit(self):
self.stop_clicking()
self.program_running = False
def run(self):
while self.program_running:
while self.running:
mouse.click(self.button)
time.sleep(self.delay)
time.sleep(0.1)
mouse = Controller()
click_thread = ClickMouse(delay, button)
click_thread.start()
def on_press(key):
if key == start_stop_key:
if click_thread.running:
click_thread.stop_clicking()
else:
click_thread.start_clicking()
elif key == exit_key:
click_thread.exit()
listener.stop()
with Listener(on_press=on_press) as listener:
listener.join()
运行 命令行上的脚本 window,然后按 "s" 键开始自动点击,按 "e" 键退出,然后将鼠标指针停留在代码单元格(通常会在一定延迟后点击)。
改进@Ashish Anand 的回答
开始时使用此代码:
function ClickConnect(){
console.log("Working");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
}
var clicker = setInterval(ClickConnect,60000);
以及需要停止时的如下代码:
clearInterval(clicker);