[英]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腳本會發生什么?
為什么不在另一個工作目錄中進行修改? 是否有很多輔助數據或某些東西使得設置工作目錄變得困難? 即如果你的工作目錄是A
, git clone AB
,然后在B
工作。 完成后,您可以將更改從B
拉回到A
:
git remote add B ../B
git pull B master
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.