python - Pyd如何做熱更新?
問(wèn)題描述
現(xiàn)在做了一個(gè)PC客戶端的插件更新系統(tǒng)。以前插件是.py后綴的。沒(méi)什么問(wèn)題。 但是最近用cython編譯成pyd就有問(wèn)題了。當(dāng)主程序import pyd這個(gè)模塊的時(shí)候,就刪不掉了。提示文件占用。只有當(dāng)主程序關(guān)閉后,才能刪除。 但這樣就失去了熱更新的意義。 有沒(méi)有什么辦法能動(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也是刪不掉。
問(wèn)題解答
回答1:目前有一種折中的方案,用一個(gè)插件管理類去控制導(dǎo)入和獲取pyd,優(yōu)點(diǎn)就是可以隨意次數(shù)的熱更新,缺點(diǎn)就是所有引用的import語(yǔ)法都要換成插件管理類去 import
回答2:導(dǎo)入的pyd文件如果刪除不掉,能否每次用新的pyd文件去更新,如20170616.pyd(只是例子),其他舊的文件在每次停主程序或者其他時(shí)機(jī)刪除。
回答3:pyd 本質(zhì)就是 dll
有 dll地獄一說(shuō),形容dll難于做版本管理
相關(guān)文章:
1. angular.js - Angular路由和express路由的組合使用問(wèn)題2. 網(wǎng)絡(luò)傳輸協(xié)議 - 以下三種下載方式有什么不同?如何用python模擬下載器下載?3. java 排序的問(wèn)題4. 表單提交驗(yàn)證,沒(méi)反應(yīng),求老師指點(diǎn)5. 我的html頁(yè)面一提交,網(wǎng)頁(yè)便顯示出了我的php代碼,求問(wèn)是什么原因?6. 如何修改phpstudy的phpmyadmin放到其他地方7. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯(cuò)了?8. tp6表單令牌9. node.js - gulp文件監(jiān)聽(tīng)的問(wèn)題10. php - mysql中,作為主鍵的字段,用int類型,是不是比用char類型的效率更高?
