我有一個使用execfile並在子進程中運行腳本的主進程。這工作正常,除非腳本在另一個目錄 - 然後一切都崩潰了。多處理時全局變量NameError,只在子目錄中
這是mainprocess.py
:
from multiprocessing import Process
m = "subdir\\test.py"
if __name__ == '__main__':
p = Process(target = execfile, args = (m,))
p.start()
然後在子目錄中恰當地命名爲子目錄,我有test.py
import time
def foo():
print time.time()
foo()
當我運行mainprocess.py
,我得到的錯誤:
NameError: global name 'time' is not defined
但問題不限於模塊名稱 - sometim es我會在其他代碼段上的函數名稱上發生錯誤。
我試過在mainprocess.py
和if
聲明裏面輸入時間,但都沒有任何影響。
避免錯誤的一種方法(我沒有試過這個),是將test.py
複製到父目錄並在文件中插入一行到os.chdir
回到原始目錄。但是,這似乎相當sl。。
那麼發生了什麼?
爲什麼不使用內置的,全局和局部命名空間的說明這個['subprocess'](https://docs.python.org/2/library/subprocess.html)模塊? – dano