如何在google collab后台运行python脚本?

5us2dqdw  于 2023-01-16  发布在  Python
关注(0)|答案(4)|浏览(638)

这是我在stackoverflow上的第一个问题(通常我的疑问过去常常从其他已经问过的疑问中得到澄清,但这次我的疑问没有得到回答,所以我现在直接问它)
我正在开发一个游戏,其中涉及一些不同类型的迷宫和谜题。因此,我使用python进行程序生成。但有一个问题。我的PC不够强大(双核),无法设计大谜题(小谜题很好,但对于较大的谜题,它看起来像是一个无限循环),我也不能让PC开机几个小时,只是为了设计一些谜题
后来我了解了Google collab。我检查了一下,我的python脚本运行得很好。但是我想在后台运行脚本(即使我的电脑关机,脚本也应该运行)。我该怎么做呢?
先谢了

jbose2ul

jbose2ul1#

colab,即使在您的PC/浏览器停止访问colab运行时之后,也要继续运行脚本大约一个小时。在一个小时的空闲时间之后,分配的colab资源将被释放,您的脚本将停止执行。
Colab资源不能连续占用超过约9小时。运行时将在最多约9小时后自动关闭/停止。
在后台运行脚本,请使用以下代码,

#run the script/API in the background
import subprocess
subprocess.Popen(["python", "/content/test.py", "argument1"])
vlurs2pr

vlurs2pr2#

将脚本写入文件〉

%%writefile srv.py
import http.server
import socketserver

PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

像这样运行〉

get_ipython().system_raw('python3 srv.py &')

确保它正在运行〉

!ps -ef
....
root         433       1  2 04:39 ?        00:00:00 python3 srv.py
bttbmeg0

bttbmeg03#

您可以使用

%%python --bg

from datetime import datetime
import time
for i in range(5):
    print(datetime.now(), flush=True)
    time.sleep(1)

%%script bash --bg

for i in $(seq 5); do
    date
    sleep 1
done

此外,还可以通过这种方式捕获输出
标准输出转到变量output

%%python --bg --out output

from datetime import datetime
import time
for i in range(5):
    print(datetime.now())
    time.sleep(1)

在下一个单元格中迭代输出

for line in output:
    print(output)
rqenqsqc

rqenqsqc4#

最简单的后台colab命令:

!while true; do nohup you_command_line >/dev/null 2>&1; sleep 5; done >/dev/null 2>&1 &

相关问题