python - Pyd如何做熱更新?
問題描述
現(xiàn)在做了一個(gè)PC客戶端的插件更新系統(tǒng)。以前插件是.py后綴的。沒什么問題。 但是最近用cython編譯成pyd就有問題了。當(dāng)主程序import pyd這個(gè)模塊的時(shí)候,就刪不掉了。提示文件占用。只有當(dāng)主程序關(guān)閉后,才能刪除。 但這樣就失去了熱更新的意義。 有沒有什么辦法能動(dòng)態(tài)卸載pyd或者有更好的辦法?
import xxpydimport sysprint ’xxpyd’ in sys.modulesdel sys.modules[’xxpyd’]print ’xxpyd’ in sys.modulesimport timetime.sleep(100)
及時(shí)這樣,刪除了 sys.modules,pyd也是刪不掉。
問題解答
回答1:目前有一種折中的方案,用一個(gè)插件管理類去控制導(dǎo)入和獲取pyd,優(yōu)點(diǎn)就是可以隨意次數(shù)的熱更新,缺點(diǎn)就是所有引用的import語法都要換成插件管理類去 import
回答2:導(dǎo)入的pyd文件如果刪除不掉,能否每次用新的pyd文件去更新,如20170616.pyd(只是例子),其他舊的文件在每次停主程序或者其他時(shí)機(jī)刪除。
回答3:pyd 本質(zhì)就是 dll
有 dll地獄一說,形容dll難于做版本管理
相關(guān)文章:
1. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)2. html按鍵開關(guān)如何提交我想需要的值到數(shù)據(jù)庫3. mysql取模分表與分表4. gvim - 誰有vim里CSS的Indent文件, 能縮進(jìn)@media里面的5. HTML 5輸入框只能輸入漢字、字母、數(shù)字、標(biāo)點(diǎn)符號(hào)?正則如何寫?6. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問題 麻煩幫我看一下7. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯(cuò)誤8. PHP類屬性聲明?9. objective-c - ios 怎么實(shí)現(xiàn)微信聯(lián)系列表 最好是swift10. javascript - 請(qǐng)教如何獲取百度貼吧新增的兩個(gè)加密參數(shù)
