十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
importlib 模塊的作用
模塊,是一個一個單獨的py文件 包,里面包含多個模塊(py文件)
動態(tài)導(dǎo)入模塊,這樣就不用寫那么多的import代碼, 典型的例子: 自動同步服務(wù),每個網(wǎng)站都有一個py文件。主進程里收到同步任務(wù),根據(jù)名稱來動態(tài)導(dǎo)入對應(yīng)的py文件,這樣就不用寫那么多的import代碼。(有點類似java的工廠方法)
但是,importlib并不能解決我在線修改py源碼,再不重啟進程的情況下,使修改生效。 這種情況,可以使用reload()
reload方法
為防止兩個模塊互相導(dǎo)入的問題,Python默認所有的模塊都只導(dǎo)入一次,如果需要重新導(dǎo)入模塊, Python2.7可以直接用reload(),Python3可以用下面幾種方法:
方法一:基本方法 from imp import reload reload(module)
方法二:按照套路,可以這樣 import imp imp.reload(module)
方法三:看看imp.py,有發(fā)現(xiàn),所以還可以這樣 import importlib importlib.reload(module)
方法四:根據(jù)天理,當(dāng)然也可以這樣 from importlib import reload reload(module)
在多進程的 程序中,一個進程的reload是無法影響另一個進程的
例子:
# 在主進程中啟動多進程 def begin(): """ 啟動多進程 """ plist = [] for i in xrange(Num_process): p = Process(target=pre_run) p.start() plist.append(p) # 此進程監(jiān)聽redis消息,收到消息,即執(zhí)行reload方法 p = Process(target=reload_spider) p.start() plist.append(p) for p in plist: p.join()
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。