Wie kann verhindert werden, dass Google Colab die Verbindung trennt?

121

F: Gibt es eine Möglichkeit, programmgesteuert zu verhindern, dass Google Colab bei einer Zeitüberschreitung die Verbindung trennt?

Im Folgenden werden die Bedingungen beschrieben, unter denen ein Notebook automatisch getrennt wird:

Google Colab-Notebooks haben eine Leerlaufzeit von 90 Minuten und eine absolute Zeitüberschreitung von 12 Stunden. Wenn der Nutzer länger als 90 Minuten nicht mit seinem Google Colab-Notizbuch interagiert, wird seine Instanz automatisch beendet. Die maximale Lebensdauer einer Colab-Instanz beträgt 12 Stunden.

Natürlich möchten wir das Maximum automatisch aus der Instanz herausholen, ohne ständig manuell damit interagieren zu müssen . Hier gehe ich von allgemein bekannten Systemanforderungen aus:

  • Ubuntu 18 LTS / Windows 10 / Mac Betriebssysteme
  • Bei Linux-basierten Systemen werden gängige DEs wie Gnome 3 oder Unity verwendet
  • Firefox- oder Chromium-Browser

Ich möchte hier darauf hinweisen, dass ein solches Verhalten nicht gegen die Nutzungsbedingungen von Google Colab verstößt , obwohl es nicht gemäß den häufig gestellten Fragen empfohlen wird (kurz: Moralisch gesehen ist es nicht in Ordnung, alle GPUs zu verbrauchen, wenn Sie es nicht wirklich benötigen ).


Meine aktuelle Lösung ist sehr dumm:

  • Zuerst schalte ich den Bildschirmschoner aus, damit mein Bildschirm immer eingeschaltet ist.
  • Ich habe ein Arduino-Board, also habe ich es einfach in einen Gummi-Enten-USB verwandelt und es dazu gebracht, primitive Benutzerinteraktionen zu emulieren, während ich schlafe (nur weil ich es für andere Anwendungsfälle zur Hand habe).

Gibt es bessere Möglichkeiten?

FalconUA
quelle
1
Ich habe mich auch über die gleiche Frage gewundert. Wäre hilfreich für Studenten während der Zeit ihrer Abschlussarbeit Verteidigung.
Dmitrii
2
"Leerlaufzeitüberschreitung von 90 Minuten ... Wenn ein Nutzer länger als 90 Minuten nicht mit seinem Google Colab-Notizbuch interagiert, wird seine Instanz automatisch beendet." Das ist schlecht, weil Kerastuner dann unmöglich zu benutzen ist. Google-Mitarbeiter müssen genauer nachdenken, wenn sie wirklich möchten, dass die Öffentlichkeit Kerastuner verwendet.
Geoffrey Anderson
1
Wie kann ich verhindern, dass dieses Skript ausgeführt wird?
Murtaza Kamal
Kein Code, sondern ein kleines Gewicht und eine Rücktaste auf Ihrem System können den Trick für Sie tun. Hoffe du hast verstanden!
Vikalp Jain

Antworten:

109

Bearbeiten: Anscheinend ist die Lösung sehr einfach und benötigt kein JavaScript. Erstellen Sie einfach unten eine neue Zelle mit der folgenden Zeile:

while True:pass

Halten Sie nun die Zelle in der Ausführungssequenz, damit die Endlosschleife nicht stoppt und Ihre Sitzung am Leben bleibt.

Alte Methode: Legen Sie ein Javascript-Intervall fest, um alle 60 Sekunden auf die Schaltfläche "Verbinden" zu klicken. Öffnen Sie die Entwicklereinstellungen (in Ihrem Webbrowser) mit Strg + Umschalt + I, klicken Sie dann auf die Registerkarte Konsole und geben Sie diese an der Konsolenaufforderung ein. (Für Mac drücken Sie Option + Befehl + I)

function ConnectButton(){
    console.log("Connect pushed"); 
    document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click() 
}
setInterval(ConnectButton,60000);
Tanay Karve
quelle
1
Es heißt Uncaught TypeError: Die Eigenschaft 'click' von null kann bei ConnectButton
Shaida Muhammad
1
Es scheint, dass
Ihre
1
Es wurde
behoben,
4
In Chrome können Sie ein Lesezeichen erstellen, um dieses Snippet mit einem Klick zu aktivieren. Erstellen Sie einfach ein Lesezeichen mit der folgenden URL: javascript:void(setInterval(function(){ console.log("Connect pushed"); document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click(); },60000))(einzeilige Version desselben Befehls). Ich bin nicht sicher, ob dies in anderen Browsern
funktioniert
1
Diese Antwort scheint veraltet zu sein. Hat bei mir nicht funktioniert!
Shahriar Kabir Khan
48

Da die ID der Schaltfläche "Verbinden" jetzt in "Colab-Connect-Schaltfläche" geändert wird, kann der folgende Code verwendet werden, um weiterhin auf die Schaltfläche zu klicken.

function ClickConnect(){
    console.log("Clicked on connect button"); 
    document.querySelector("colab-connect-button").click()
}
setInterval(ClickConnect,60000)

Wenn dies immer noch nicht funktioniert, führen Sie die folgenden Schritte aus:

  1. Klicken Sie mit der rechten Maustaste auf die Schaltfläche "Verbinden" (oben rechts in der Spalte).
  2. Klicken Sie auf inspizieren
  3. Holen Sie sich die HTML-ID der Schaltfläche und ersetzen Sie sie durch den folgenden Code
function ClickConnect(){
    console.log("Clicked on connect button"); 
    document.querySelector("Put ID here").click() // Change id here
}
setInterval(ClickConnect,60000)
Nitesh Jindal
quelle
5
Dies ist die aktuelle Lösung gemäß der neuen Schaltflächen-ID (Februar 2020)
Kaushal28
Wenn Google jemals versuchen wird, dies nicht zum Laufen zu bringen (Beispiel: Machen Sie es zu einer Klasse und haben Sie mehrere gefälschte unsichtbare Schaltflächen mit derselben Klasse), können Sie statt Schritt 3 immer: Rechtsklick -> Kopieren -> JS-Pfad kopieren
Banjer_HD
Immer noch das gleiche Problem Laufzeit getrennt, Laufzeit wegen Inaktivität getrennt
SUSHMA KUMARI
3
Wie kann ich verhindern, dass dieses Skript ausgeführt wird?
Murtaza Kamal
2
@MurtazaKamal Crtl + Shift + I, Gehe zu Quellen und klicke auf die Schaltfläche Pause.
Faisal Maqbool
19

Nun, das funktioniert für mich -

Führen Sie den folgenden Code in der Konsole aus, um zu verhindern, dass Sie die Verbindung trennen. Strg + Umschalt + i, um die Inspektoransicht zu öffnen. Dann gehe zur Konsole.

function ClickConnect(){
    console.log("Working"); 
    document.querySelector("colab-toolbar-button#connect").click() 
}
setInterval(ClickConnect,60000)

So verhindern Sie, dass Google Colab die Verbindung trennt

Kavyajeet Bora
quelle
1
Danke, das funktioniert auch gut für mich. (Ich habe den gleichen Kommentar letzte Woche hier hinterlassen, aber er ist verschwunden. Es ist wichtig, die Arbeit nicht zu verlieren, daher verdient diese Antwort positives Feedback.)
Geoffrey Anderson
Funktioniert nicht, wird immer noch getrennt. (Verwenden von Firefox Browser 74.0 (64-Bit)).
hafiz031
Funktioniert dies auch, wenn Sie das Browserfenster minimiert lassen und mit anderen Anwendungen arbeiten?
HarryS
16

Für mich folgende Beispiele:

  • document.querySelector("#connect").click() oder
  • document.querySelector("colab-toolbar-button#connect").click() oder
  • document.querySelector("colab-connect-button").click()

warfen Fehler.

Ich musste sie an Folgendes anpassen:

Version 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)

Version 2: Wenn Sie die Funktion beenden möchten, finden Sie hier den neuen Code:

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();

Um zu stoppen, rufen Sie an:

stopClickConnect();
Barbossusus
quelle
Für mich ist dies die einzige Lösung, die keinen Fehler auslöst. Danke
Paar
Ich habe die oben genannten Methoden und einige andere Blogs ausprobiert. Bei weitem und für die Gegenwart relevant, funktionieren beide Codes fehlerfrei. Vielen Dank :)
HarryS
14

Erstellen Sie mit pynput einen Python-Code in Ihrem PC

from pynput.mouse import Button, Controller
import time

mouse = Controller()

while True:
    mouse.click(Button.left, 1)
    time.sleep(30)

Führen Sie diesen Code auf Ihrem Desktop aus. Zeigen Sie dann mit dem Mauspfeil über die Verzeichnisstruktur (Spalte links - Dateibereich) in einem beliebigen Verzeichnis. Dieser Code klickt alle 30 Sekunden auf das Verzeichnis, sodass er alle 30 Sekunden erweitert und verkleinert wird, sodass Ihre Sitzung dies nicht tut abgelaufen Wichtig - Sie müssen diesen Code auf Ihrem PC ausführen

Seyon Seyon
quelle
Ich habe dies versucht und beim Importieren von pynput einen DisplayNameError erhalten. Vielleicht liegt es daran, dass wir nur über einen Browser (in einer gehosteten Laufzeitsitzung) auf colab zugreifen können und nicht über Tastatur / Maus usw.
HasnainMamdani
Ich denke, Sie haben die Idee falsch verstanden. Auf Colab wird nicht mit Python zugegriffen. Nur Ihre Maus wird durch den obigen Code gesteuert (weil zur Simulation die Interaktion der Maus mit dem Browser). Probleme mit der Bibliothek im lokalen PC beheben
Seyon Seyon
12

Anstatt auf die Schaltfläche "Verbinden" zu klicken, klicke ich einfach auf die Schaltfläche "Kommentar", um meine Sitzung am Leben zu erhalten. (August 2020)

function ClickConnect(){

console.log("Working"); 
document.querySelector("#comments > span").click() 
}
setInterval(ClickConnect,5000)
Diptesh Chakraborty
quelle
11

Ich verwende ein Makroprogramm, um regelmäßig auf die Schaltfläche RAM / Disk zu klicken, um das Modell die ganze Nacht zu trainieren. Der Trick besteht darin, ein Makroprogramm so zu konfigurieren, dass es zweimal mit einem kurzen Intervall zwischen den beiden Klicks auf die Ram / Disk Colab-Symbolleistenschaltfläche klickt, sodass die Verbindung auch dann wiederhergestellt wird, wenn die Laufzeit getrennt wird. (Der erste Klick dient zum Schließen des Dialogfelds und der zweite Klick zum erneuten Verbinden). Sie müssen Ihren Laptop jedoch die ganze Nacht offen lassen und möglicherweise die Registerkarte Colab anheften.

avi
quelle
8

Die obigen Antworten mit Hilfe einiger Skripte funktionieren möglicherweise gut. Ich habe eine Lösung (oder eine Art Trick) für die lästige Trennung ohne Skripte, vor allem , wenn Ihr Programm Daten von Google Drive lesen muß, wie tief ein Lernnetzwerk - Modell trainiert, wo Skripte zu tun reconnectBetrieb ist zwecklos , weil einmal Wenn Sie die Verbindung zu Ihrem Colab trennen, ist das Programm gerade tot. Sie sollten erneut eine manuelle Verbindung zu Ihrem Google-Laufwerk herstellen, damit Ihr Modell den Datensatz wieder lesen kann. Die Skripte tun dies jedoch nicht.
Ich habe es schon oft getestet und es funktioniert gut.
Wenn Sie ein Programm auf der Colab-Seite mit einem Browser ausführen (ich verwende Chrome), denken Sie daran, dass Sie nach dem Start Ihres Programms keine Vorgänge mit Ihrem Browser ausführen, z. B.: Wechseln zu anderen Webseiten, Öffnen oder Schließen einer anderen Webseite und Lassen Sie es einfach dort und warten Sie, bis Ihr Programm beendet ist. Sie können zu einer anderen Software wie pycharm wechseln, um Ihre Codes weiter zu schreiben, aber nicht zu einer anderen Webseite zu wechseln. Ich weiß nicht, warum das Öffnen oder Schließen oder Wechseln zu anderen Seiten das Verbindungsproblem der Google Colab-Seite verursacht, aber jedes Mal, wenn ich versuche, meinen Browser zu stören, wie bei einem Suchjob, wird meine Verbindung zu Colab bald unterbrochen.

Hu Xixi
quelle
Ich werde Ihrer Antwort hinzufügen, dass Firefox mit diesem Trick gut funktioniert. Aber für mich habe ich den Schlafmodus auf meinem Mac ausgeschaltet und das Browserfenster vor alle anderen Fenster gestellt, als würde ich aktiv daran arbeiten. Ich habe es die ganze Nacht behalten und es funktioniert. Keiner der Javascript-Tricks hat funktioniert. Ein Hinweis ist, dass ich Google Colab Pro verwende: Ich bin mir also nicht sicher, ob dies mit kostenlosem Colab funktioniert.
Yasser Sinjab
@ Yasser Sinjab Danke für deine Ergänzungen, ich benutze die kostenlose Version und es funktioniert gut.
Hu Xixi
8

Versuche dies:

function ClickConnect(){
  console.log("Working"); 
  document
    .querySelector("#top-toolbar > colab-connect-button")
    .shadowRoot
    .querySelector("#connect")
    .click()
}

setInterval(ClickConnect,60000)
Amit Modi
quelle
6

Verwendung von Python-Selen

from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time   

driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver')

notebook_url = ''
driver.get(notebook_url)

# run all cells
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.F9)
time.sleep(5)

# click to stay connected
start_time = time.time()
current_time = time.time()
max_time = 11*59*60 #12hours

while (current_time - start_time) < max_time:
    webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform()
    driver.find_element_by_xpath('//*[@id="top-toolbar"]/colab-connect-button').click()
    time.sleep(30)
    current_time = time.time()
SciPy
quelle
6

Ich glaube nicht, dass die JavaScript-Lösungen mehr funktionieren. Ich habe es aus meinem Notizbuch heraus gemacht mit:

    from IPython.display import display, HTML
    js = ('<script>function ConnectButton(){ '
           'console.log("Connect pushed"); '
           'document.querySelector("#connect").click()} '
           'setInterval(ConnectButton,3000);</script>')
    display(HTML(js))

Wenn Sie zum ersten Mal alle ausführen (bevor der JavaScript- oder Python-Code gestartet wurde), zeigt die Konsole Folgendes an:

Connected to 
wss://colab.research.google.com/api/kernels/0e1ce105-0127-4758-90e48cf801ce01a3/channels?session_id=5d8...

Immer wenn JavaScript ausgeführt wird, wird der Abschnitt console.log angezeigt, der Klickabschnitt enthält jedoch lediglich Folgendes:

Connect pushed

Uncaught TypeError: Cannot read property 'click' of null
 at ConnectButton (<anonymous>:1:92)

Andere schlugen vor, dass der Name der Schaltfläche in # colab-connect-button geändert wurde, dies führt jedoch zu demselben Fehler.

Nach dem Start der Laufzeit wird die Schaltfläche geändert, um RAM / DISK anzuzeigen, und ein Dropdown-Menü wird angezeigt. Durch Klicken auf die Dropdown-Liste wird eine neue Datei erstellt <DIV class=goog menu...>, die zuvor im DOM nicht angezeigt wurde. Sie bietet zwei Optionen: "Mit gehosteter Laufzeit verbinden" und "Mit lokaler Laufzeit verbinden". Wenn das Konsolenfenster geöffnet ist und Elemente anzeigt, wird dieser DIV angezeigt, wenn Sie auf das Dropdown-Element klicken. Durch einfaches Verschieben des Mausfokus zwischen den beiden Optionen im neuen Fenster werden zusätzliche Elemente zum DOM hinzugefügt. Sobald die Maus den Fokus verliert, werden sie auch ohne Klicken vollständig aus dem DOM entfernt.

M. Fuller
quelle
stimme zu, gibt es eine Lösung
Talha Anwar
5

Ich habe die obigen Codes ausprobiert, aber sie haben bei mir nicht funktioniert. Hier ist mein JS-Code zum erneuten Verbinden.

let interval = setInterval(function(){
let ok = document.getElementById('ok');
if(ok != null){
   console.log("Connect pushed");
ok.click();
}},60000)

Sie können es auf die gleiche Weise verwenden (auf der Konsole Ihres Browsers ausführen), um es auszuführen. Wenn Sie das Skript stoppen möchten, können Sie es eingeben clearInterval(interval)und erneut ausführen setInterval(interval).

Ich hoffe das hilft dir.

esr
quelle
5

Update beendet. Für mich geht das.

function ClickConnect(){
console.log("Working"); 
document.querySelector("paper-icon-button").click()
}
Const myjob = setInterval(ClickConnect, 60000)

Wenn Sie nicht für Sie arbeiten, versuchen Sie es zu klären, indem Sie laufen:

clearInterval(myjob)

Harter Goyal
quelle
4

Dieser hat für mich funktioniert (anscheinend haben sie den Klassennamen oder die ID der Schaltfläche geändert):

function ClickConnect(){
    console.log("Working"); 
    document.querySelector("colab-connect-button").click() 
}
setInterval(ClickConnect,60000)

Stephane Belemkoabga
quelle
3

Ich würde die Verwendung von JQuery empfehlen (es scheint, dass Co-Lab standardmäßig JQuery enthält).

function ClickConnect(){
  console.log("Working");
  $("colab-toolbar-button").click();
}
setInterval(ClickConnect,60000);
Jinhua Wang
quelle
Dieser funktioniert nicht:Uncaught ReferenceError: $ is not defined at ClickConnect (<anonymous>:3:3)
Kel Solaar
3

Ich habe ein Problem mit diesen Javascript-Funktionen:

function ClickConnect(){
    console.log("Clicked on connect button"); 
    document.querySelector("colab-connect-button").click()
}
setInterval(ClickConnect,60000)

Sie drucken die Schaltfläche "Auf Verbindung klicken" auf der Konsole, bevor die Schaltfläche tatsächlich angeklickt wird. Wie Sie den verschiedenen Antworten in diesem Thread entnehmen können, hat sich die ID der Schaltfläche "Verbinden" seit dem Start von Google Colab einige Male geändert. Und es könnte auch in Zukunft geändert werden. Wenn Sie also eine alte Antwort aus diesem Thread kopieren möchten, wird möglicherweise "Klicken auf die Schaltfläche" Verbinden "angezeigt, dies ist jedoch möglicherweise nicht der Fall. Wenn das Klicken nicht funktioniert, wird natürlich ein Fehler auf der Konsole ausgegeben, aber was ist, wenn Sie ihn möglicherweise nicht versehentlich sehen? Also mach das besser:

function ClickConnect(){
    document.querySelector("colab-connect-button").click()
    console.log("Clicked on connect button"); 
}
setInterval(ClickConnect,60000)

Und Sie werden auf jeden Fall sehen, ob es wirklich funktioniert oder nicht.

Albos Hajdari
quelle
3
function ClickConnect()
{
    console.log("Working...."); 
    document.querySelector("paper-button#comments").click()
}
setInterval(ClickConnect,600)

Das hat bei mir funktioniert, aber mit Bedacht eingesetzt

viel Spaß beim Lernen :)

Code einfrieren
quelle
3

Die folgende NEUESTE Lösung funktioniert für mich:

function ClickConnect(){
  colab.config
  console.log("Connnect Clicked - Start"); 
  document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
  console.log("Connnect Clicked - End");
};
setInterval(ClickConnect, 60000)
hashc
quelle
Erwägen Sie, eine Erklärung für Ihre Antwort beizufügen.
Suraj Subramanian
3

Das Javascript unten funktioniert für mich. Credits an @ artur.k.space .

function ColabReconnect() {
    var dialog = document.querySelector("colab-dialog.yes-no-dialog");
    var dialogTitle = dialog && dialog.querySelector("div.content-area>h2");
    if (dialogTitle && dialogTitle.innerText == "Runtime disconnected") {
        dialog.querySelector("paper-button#ok").click();
        console.log("Reconnecting...");
    } else {
        console.log("ColabReconnect is in service.");
    }
}
timerId = setInterval(ColabReconnect, 60000);

Klicken Sie im Colab-Notizbuch igleichzeitig auf Strg + Umschalt + Taste. Kopieren Sie das Skript und fügen Sie es in die Eingabeaufforderungszeile ein. Drücken Sie dann, Enterbevor Sie den Editor schließen.

Auf diese Weise überprüft die Funktion alle 60 Sekunden, ob der Verbindungsdialog auf dem Bildschirm angezeigt wird. Wenn dies der Fall ist, klickt die Funktion okautomatisch auf die Schaltfläche für Sie.

Li-Pin Juan
quelle
3

Nun, ich bin kein Python-Typ und ich weiß auch nicht, was die eigentliche Verwendung dieses 'Colab' ist. Ich benutze es als Build-System. Lol. Und ich habe die SSH-Weiterleitung darin eingerichtet, dann diesen Code eingefügt und ihn einfach laufen lassen und ja, es funktioniert.

import getpass
authtoken = getpass.getpass()
Rajesh Kumbhakar
quelle
3

Die am häufigsten gewählte Antwort funktioniert sicherlich für mich, aber das Fenster "Sitzung verwalten" wird immer wieder angezeigt.
Ich habe das gelöst, indem ich über die unten stehende Browserkonsole automatisch auf die Schaltfläche Aktualisieren geklickt habe

function ClickRefresh(){
    console.log("Clicked on refresh button"); 
    document.querySelector("paper-icon-button").click()
}
setInterval(ClickRefresh, 60000)

Weitere Informationen hierzu finden Sie unter https://gist.github.com/Subangkar/fd1ef276fd40dc374a7c80acc247613e

Subangkar KrS
quelle
3

Dieser Code klickt im Datei-Explorer-Bereich weiterhin auf "Ordner aktualisieren".

function ClickRefresh(){
  console.log("Working"); 
  document.querySelector("[icon='colab:folder-refresh']").click()
}
const myjob = setInterval(ClickRefresh, 60000)
Korakot
quelle
1
Beachten Sie, dass der Datei-Explorer / Ordnerbereich erweitert werden muss, damit dieser funktioniert.
Kel Solaar
2

Sie können auch Python verwenden, um die Pfeiltasten zu drücken. Ich habe auch im folgenden Code ein wenig Zufälligkeit hinzugefügt.

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])
Jinhua Wang
quelle
Übrigens, Sie möchten wahrscheinlich auf den Inhalt von zugreifen array, dieser Code scheint ganz entschlossen zu sein, jedes Mal L, R, U, D zu drücken
Marc Laugharn
Warum nichtfor key in array: press(key)
PixelZerg
2

Führen Sie einfach den folgenden Code nach der Zelle aus, die Sie ausführen möchten, um Datenverlust zu vermeiden.

!python

Schreiben Sie auch, um diesen Modus zu verlassen

exit()
Soban Khan
quelle
2

Ich suchte nach einer Lösung, bis ich einen Python3 fand, der die Maus zufällig hin und her bewegt und klickt, immer an derselben Stelle, aber das reicht aus, um Colab zu täuschen, ich sei auf dem Notebook aktiv und trenne nicht.

import numpy as np
import time
import mouse
import threading

def move_mouse():
    while True:
        random_row = np.random.random_sample()*100
        random_col = np.random.random_sample()*10
        random_time = np.random.random_sample()*np.random.random_sample() * 100
        mouse.wheel(1000)
        mouse.wheel(-1000)
        mouse.move(random_row, random_col, absolute=False, duration=0.2)
        mouse.move(-random_row, -random_col, absolute=False, duration = 0.2)
        mouse.LEFT
        time.sleep(random_time)


x = threading.Thread(target=move_mouse)
x.start()

Sie müssen die erforderlichen Pakete installieren: sudo -H pip3 install <package_name> Sie müssen es nur (auf Ihrem lokalen Computer) mit ausführen sudo(da es die Kontrolle über die Maus übernimmt) und es sollte funktionieren, sodass Sie die 12-Stunden-Sitzungen von Colab voll ausnutzen können.

Credits: Für Benutzer von Colab (Pro): Verhindert, dass die Sitzung aufgrund von Inaktivität getrennt wird

Singrium
quelle
Ich vermute, Sie möchten es auch in einen separaten Thread stellen: D
FalconUA
@ FalconUA, Letzte Nacht habe ich Colab auf meinem PC laufen lassen und als ich morgens aufwachte, fand ich, dass es immer noch läuft. Ich denke, das Skript funktioniert gut, aber ich habe einige Warnungen über Thread erhalten, Sie haben Recht.
Singrium
2

Mit GNU Colab können Sie eine standardmäßige persistente Desktop-Umgebung auf einer Colaboratory-Instanz ausführen.

In der Tat enthält es einen Mechanismus, der Maschinen nicht im Leerlauf sterben lässt.

Hier ist eine Videodemonstration .

Dagobert Duck
quelle
2

Möglicherweise funktionieren viele der vorherigen Lösungen nicht mehr. Dieser folgende Code erstellt beispielsweise weiterhin neue Codezellen in Colab, funktioniert jedoch. Zweifellos ist das Erstellen einer Reihe von Codezellen eine Unannehmlichkeit. Wenn in einigen Betriebsstunden zu viele Codezellen erstellt werden und nicht genügend RAM vorhanden ist, friert der Browser möglicherweise ein.

Dadurch werden wiederholt Codezellen erstellt.

function ClickConnect(){
console.log("Working"); 
document.querySelector("colab-toolbar-button").click() 
}setInterval(ClickConnect,60000)

Aber ich habe festgestellt, dass der folgende Code funktioniert und keine Probleme verursacht. Klicken Sie auf der Registerkarte Colab-Notizbuch Ctrl + Shift + igleichzeitig auf die Taste und fügen Sie den folgenden Code in die Konsole ein. 120000 Intervalle sind genug.

function ClickConnect(){
console.log("Working"); 
document.querySelector("colab-toolbar-button#connect").click() 
}setInterval(ClickConnect,120000)

Ich habe diesen Code im November 2020 in Firefox getestet. Er funktioniert auch auf Chrom.

Arafat Hasan
quelle
1
function ClickConnect(){
    console.log("Clicked on connect button"); 
    document.querySelector("connect").click() // Change id here
}
setInterval(ClickConnect,60000)

Versuchen Sie den obigen Code, es hat bei mir funktioniert :)

Divyansh Srivastava
quelle