<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Python利用ctypes提高執行速度

        來源:懂視網 責編:小采 時間:2020-11-27 14:27:55
        文檔

        Python利用ctypes提高執行速度

        Python利用ctypes提高執行速度:ctypes 庫可以讓開發者借助C語言進行開發。這個引入C語言的接口可以幫助我們做很多事情,比如需要調用C代碼的來提高性能的一些小型問題。通過它你可以接入Windows系統上的 kernel32.dll 和 msvcrt.dll 動態鏈接庫,以及Linux系統上的 libc.so.6
        推薦度:
        導讀Python利用ctypes提高執行速度:ctypes 庫可以讓開發者借助C語言進行開發。這個引入C語言的接口可以幫助我們做很多事情,比如需要調用C代碼的來提高性能的一些小型問題。通過它你可以接入Windows系統上的 kernel32.dll 和 msvcrt.dll 動態鏈接庫,以及Linux系統上的 libc.so.6

        ctypes 庫可以讓開發者借助C語言進行開發。這個引入C語言的接口可以幫助我們做很多事情,比如需要調用C代碼的來提高性能的一些小型問題。通過它你可以接入Windows系統上的 kernel32.dll 和 msvcrt.dll 動態鏈接庫,以及Linux系統上的 libc.so.6 庫。當然你也可以使用自己的編譯好的共享庫

        我們先來看一個簡單的例子 我們使用 Python 求 1000000 以內素數,重復這個過程10次,并計算運行時間。

        Supplier和Memoize

        SQLite是Android里常用的一種數據存儲方式,在訪問數據庫數據時需要通過SQLiteOpenHelper。

        一份好的數據庫連接代碼應該能解決以下幾個問題: a) 構建實例比較費資源 b) 數據庫連接最好能復用 c) onUpdate等方法在執行時不能和其他實例構成沖突。

        這里可以很簡單的這樣寫

        Suppliers.memoize(new Supplier() { @Override public SQLiteOpenHelper get() { return new ...;
         }
        })

        這段代碼利用了Guava提供的一些輔助方法實現Supplier和Memoize和邏輯。顧名思義,Supplier一般被用作factory,generator,builder,closure。Memoize類似于緩存這種概念,它一旦生成了一個實例,在以后的調用中都會返回同一實例,而且,線程安全。

        這樣寫有幾個好處,一是需要時才去構建實例,并不會在一開始就去阻塞程序的執行,二是它很簡單的用memoize實現了緩存,保證只有一個實例生成。

        代碼注入

        Glow是代碼注入的重度使用者,它使我們的代碼更加結構化,清晰,簡單,同時還節省了不少的開發時間。

        Dagger 2是我們實現注入的刀具,有興趣的同學應該去網站多了解一下相關的內容。除了注入,它還有一些附贈功能,而這些恰巧能被我們用來實現緩存,而且還很簡單,我們只需要額外用到幾個annotation或接口而已。

        @Singleton

        相信大家對這個應該比較熟悉,這可是面試時的常問問題。簡單來說,它就是單例。因為所以,用了它你不用再擔心對這些實例怎么實現緩存了吧。

        @Singleton public class SingletonClass { 
        }

        @Reusable

        這是一個新的很酷的功能。單例雖然很好,但有些時候實例可能有些太大,一直放在內存,又不能回收,暫時可能程序也用不到,怎么都感覺有些浪費。很多情況下,我們并沒有那么嚴格的要求需要唯一的一個實例,能重用就重用,[email protected]?景,假如已有一個生成的實例,重用它就行,不行重新實例化,不需要保證。

        @Reusable public class ReusableClass { 
        }

        Lazy

        Lazy使用的地方和前兩者有些不同。@Singleton和@Reusable一般用在provides或類型定義的地方,但Lazy則是用在使用時,它的使用效果和最開始講到的Supplier和Memoize類似。

        @Inject Lazy lazySQLiteOpenHelper;

        這里不會先生成SQLiteOpenHelper實例,直到你開始調用lazySQLiteOpenHelper.get()。而一旦第一次實例化結束,以后的調用都會返回第一次的結果。

        Observable

        在使用app的過程中,很多數據需要從服務器端獲取。在我們app里,每天會為用戶提供一些訂制化內容,這些內容短期內不會改變,每次從服務器端去取太過耗時,但放到數據庫或文件這些持久化存儲里似乎不太必要。綜合考慮后,似乎內存緩存是個不錯的選擇。

        于是這個緩存需要提供以下功能,首先,它是個緩存,其次,它的結構需要很簡單,因為很多地方需要用到,再次,它得線程安全。

        后來我們的實現方案很簡單,利用Retrofit和Observable提供的一些方法。

        private static final long EXPIRE_MS = 5 * 60 * 1000; private Pair
        cache; public synchronized Observable getDailyContent() { if (cache == null || cache.first + EXPIRE_MS < System.currentTimeMillis()) {
         cache = Pair.create(System.currentTimeMillis(), serverApi.getContent());
         } return cache.second;
         }

        這個方法的本質是利用Retrofit返回的Observable對象,然后Observable會提供一個類似緩存的cache方法,這樣在subscribe之前,這個網絡請求不會被發出,但一旦有了結果,后來的調用者都會得到同樣的結果。

        注 意

        緩存雖好,用起來很快捷方便,但在使用過程中,大家一定要注意數據更新和線程安全,不要出現臟數據。

        來自:http://www.jointforce.com/jfperiodical/article/3516

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Python利用ctypes提高執行速度

        Python利用ctypes提高執行速度:ctypes 庫可以讓開發者借助C語言進行開發。這個引入C語言的接口可以幫助我們做很多事情,比如需要調用C代碼的來提高性能的一些小型問題。通過它你可以接入Windows系統上的 kernel32.dll 和 msvcrt.dll 動態鏈接庫,以及Linux系統上的 libc.so.6
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲永久在线观看| 亚洲国产精品一区二区第一页 | 亚洲人成网站看在线播放| 99免费在线观看视频| 久久水蜜桃亚洲av无码精品麻豆| 久久免费动漫品精老司机| 亚洲天堂中文字幕| 18勿入网站免费永久| 国产成人亚洲综合网站不卡| 午夜两性色视频免费网站| 真正全免费视频a毛片| 国产亚洲AV夜间福利香蕉149| 日韩免费无砖专区2020狼| 亚洲成aⅴ人片久青草影院按摩| 四虎成人免费影院网址| 深夜福利在线免费观看| 国外亚洲成AV人片在线观看| 国产好大好硬好爽免费不卡| 久久精品国产亚洲AV无码娇色| 无人在线观看免费高清视频| 亚洲gay片在线gv网站| 亚洲毛片网址在线观看中文字幕| 久久精品国产影库免费看| 亚洲黄色在线电影| 午夜时刻免费入口| 东方aⅴ免费观看久久av | 亚洲色成人网站WWW永久四虎| 国产伦精品一区二区三区免费迷| 91av免费在线视频| 亚洲精品一卡2卡3卡三卡四卡| 妞干网免费视频观看| 精品国产免费一区二区三区| 国产成人免费网站在线观看| 中国一级毛片视频免费看| 亚洲视频在线免费播放| 国产又粗又长又硬免费视频| 最新亚洲成av人免费看| 色偷偷女男人的天堂亚洲网 | 免费一级毛片免费播放| 光棍天堂免费手机观看在线观看 | 2020久久精品亚洲热综合一本|