初学者による初学者のためのPython

Python備忘録・おっちゃんのPython

【Memo】Google Colaboratoryの90分セッション切れ対策  --- Pythonをつかう! ---

やること

Google Colab はプログラム実行中でも、何もさわらないと90分経過でプログラムが止まってしまいます。
このセッション切れ対策として、Google Chromeのアドオンを使う方法やスクリプトを実行する方法が紹介されていましたが、アドオンがうまくいかなかったので、Pythonプログラムで画面を定期的にクリックするという原始的な方法のシンプルプログラムを書きましたので、その紹介です。   
  

やりかた

pyautoguiモジュールをインストールする

画面をクリックするのにpyautoguiモジュールを使用します。pipを使って普通にインストールします。


pip install pyautogui


   
  

Google Colaboratoryを動かす

いつもどおりにColabでプログラムをはしらせます。ブラウザはなんでもOKです。    
   

対策プログラムを動かす

ターミナルかエディタから、以下のプログラムを動かします。一応、for_colab.pyと名付けてますが、自由に名前をつけて保存、実行してください。
 
for_colab.py

#! python3
# -*- coding: utf-8 -*-

# colabを継続して使う

import time
import pyautogui

print()
print('''10分ごとにマウスカーソルを左右に少し動かし、クリックします。
12時間後に終了します。途中で停止するときは、Ctrl + c を押してください。
''')

try:
    dir = -10
    counter = 0

    while counter < 72:
        time.sleep(600)
        pyautogui.moveRel(dir, 0)
        dir = - dir

        pyautogui.click()
        counter += 1
        # print('カウンター:', counter)  # クリックしたときに出力したい場合はコメントアウト

    print('停止:12時間経過')


except KeyboardInterrupt:
    print('停止:Ctrl + c による終了')

プログラムはとてもシンプルで、time sleepで10分待ったあと、ポインタを右(または左)に少し動かしクリックします。
それを72回(=12時間)実施したら終了します。
 

google colabに戻る

先ほどプログラムをはしらせたcolabに戻って、プログラムが動いているのを確認します。
colabのプログラムの最後の方に空欄のセルをいくつか作っておき、その場所にポインタをおいておきます。以上です。

 

注意事項
  • 「for_colab.py」は定期的にクリックしますので、ポインターをどこに置いておくかが重要です。左右の動きを繰り返すので、全然違う方に動いていくことはありませんが、colabの方がスクロールしていて思いもかけないところをクリックしないように、最後にポインターを置く位置に気をつけてください。
  • colabとは別のプログラムですので、colabの計算が終わっても当然「for_colab.py」は止まりません。colabの計算が終了したら、ctrl-Cで「for_colab.py」を停止させてください。私は止め忘れていて、なんかパソコンの動きが変になった、と思ったらバックで「for_colab.py」が動いてました...
  • 10分間隔でクリックしますが、その前にパソコンがスリープしないように、スリープまでの時間は10分超に設定してください。
  • 単純に時間がきたらクリックするだけの機能ですので、動作中は別の作業はできません。睡眠学習用として使用ください。  
     

プログラム「for_colab.py」は10分間隔でクリックするようにしていますが、colabのルール的には90分以内にクリックすればよいので、time sleepの値を各自の好みで変更してください。
また、クリック時にクリックしたことを確認したければ、コメントアウトしているPRINT文を有効にしてください。
単純なプログラムですので、使いやすいように変更して使ってみてください。
  Google Colaboratoryは無料でGPUが使用できるので、機械学習の訓練にとても便利ですよね。 寝ている間にGoogle先生に訓練してもらいましょう。

'--------------------おしまい--------------------' f:id:Gen_TOD:20210111171556j:plain