程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python項目,關閉本地電腦,使程序運行在服務器上

編輯:Python

1. 引言

對應深度學習,目前我們都是在本地寫代碼,然後通過ide(如pycharm)連接服務器,將代碼和數據傳輸上去,然後在ide中運行代碼,即可在服務器上跑程序了。pycharm連接服務器請看此博文pycharm連接服務器

如果僅僅是這樣,那麼本地的電腦已關閉,服務器上跑的程序就關閉了。

那麼怎樣關閉本地電腦,同時服務器上面又可以繼續跑程序呢?請看下文。

2. 環境

本地IDE是:PyCharm
服務器是Linux系統

3. 服務器上screen的安裝

Step1: 檢測有無安裝screen
使用命令:

screen -ls

查看是否有無screen,如報錯,說明沒有安裝screen.
Step2: 連接上遠程服務器,使用命令安裝screen

CentOS 系列系統: yum install screen
Ubuntu 系列系統: sudo apt-get install screen

3. 使用screen使得服務器不依賴本地電腦而運行

Step0: 測試代碼介紹

import time
import datetime
import os
time.sleep(20)
data_path = "../data/"
# 1. 創建文件對象
file_name = os.path.join(data_path, 'test_screen.txt')
file = open(file_name, mode='w')
file.writelines(str(datetime.datetime.now()))
file.close()
for i in range(30):
time.sleep(5)
print("the number is = ", i)

(1)延長20秒後,將當前時間寫入到txt文件中。(方便觀察脫機後,是否成功運行)
(2)每延時5秒,輸出一段文字。(方便再進入程序時,觀察程序是否還在運行)

Step1: 連接遠程服務器
無論使用pycharm還是Xterm或是其他軟件,連接上遠程服務器即可。
之後的步驟,可借鑒:使用screen實現服務器獨自跑項目

Step2: 創建一個screen

(base) [email protected]:~# screen -S test

Step3: 查看剛才創建的screen

(base) [email protected]:~# screen -ls
There are screens on:
14154.test (03/29/2020 11:01:58 AM) (Attached)
1 Sockets in /run/screen/S-git.

Step4: 切換路徑到文件所在位置

(base) [email protected]:~# cd /home/folders/Fiona/program

Step5: 激活自己的環境

(base) [email protected]:/home/folders/Fiona/program# conda activate Fiona0329

Step6: 運行代碼

(Fiona0329) [email protected]:/home/folders/Fiona/program# python run.py

Step7: 按ctrl+a+d,退出screen。然後就可以關閉本地電腦了,服務器此時會自己運行程序
我這裡就直接把pycharm關閉了。運行完後,重新進入到之前創建的screen,查看程序運行結果。

Step8: 重新打開screen
(1) 先使用命令找到之前創建的screen:

(2) 重新打開screen

(base) [email protected]# screen -r 15659.test

此時就可以查看之前運行代碼的結果了,如圖所示:
器此時會自己運行程序**

結果展示
完成上面的步驟後,我直接關閉pycharm。過一段時間,我再進入創建的screen,發現程序已運行完成,內容也寫入成功,輸出也正確。具體如圖:


結果非常滿意,在我關閉本地電腦後,服務器依舊能夠自行運行程序,並輸出結果。重新進入到運行的界面後,也能看到程序輸出的結果,完美!

Step9: 刪除screen
刪除之前先找到要刪除的screen:

然後進行刪除:

(base) [email protected]# screen -X -S 16283.you quit

刪除後,再查看,就沒有被刪除的screen了:

完結,撒花!!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved