簡體   English   中英

運行python腳本並更改git分支

[英]Running a python script and changing git branch

我正在努力想方設法在編程時更好地利用我的時間。

我有一個python腳本,可以完成一些繁重的工作(可能需要幾個小時)。 現在,它所做的大部分工作都與網絡有關,所以我有足夠的cpu資源。

如果腳本是一個C二進制可執行文件,將gout checkout放到另一個分支上並做額外的工作就可以了,我甚至可以修改磁盤中的二進制文件,因為它已被復制到ram,所以直到它完成運行我不會影響程序輸出。

但python腳本是翻譯的,而不是編譯的。 如果我開始篡改源文件會發生什么,我可以破壞程序輸出,還是將文本文件和相關的導入文件復制到RAM中,這樣我就可以篡改源代碼而不會有改變正在運行的程序行為的風險?

一般來說,如果您有一個Python文件作為腳本運行,那么你沒問題。 當您運行該文件時,它將被編譯為字節碼,然后執行該字節碼。 您可以在此時更改原始腳本,並且不會中斷。

但是,我們可以通過編寫一些可怕但合法的代碼來故意破壞它:

horrible.py

from time import sleep


sleep(10)
import silly
silly.thing()

silly.py

def thing():
    print("Wow!")

您可以運行horrible.py並在運行時可以編輯磁盤上的silly.py以使其執行其他操作。 最終import silly.py ,將加載更新的版本。

解決方法是將所有導入放在文件的頂部,無論如何您可能會這樣做。

當一個python程序運行時,它被compiled (有點,更像是翻譯)到.pyc文件,然后由python解釋器運行。 更改文件時,如果代碼已在運行,則不應影響該代碼。

這是一個相關的stackoverflow答案。 如果我在運行時修改Python腳本會發生什么?

為什么不在另一個工作目錄中進行修改? 是否有很多輔助數據或某些東西使得設置工作目錄變得困難? 即如果你的工作目錄是Agit clone AB ,然后在B工作。 完成后,您可以將更改從B拉回到A

git remote add B ../B
git pull B master

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM