<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无码不卡| aa毛片免费全部播放完整| 亚洲人成色7777在线观看不卡| 午夜亚洲国产精品福利| 亚洲а∨天堂久久精品| 国产97视频人人做人人爱免费| 国产精品亚洲产品一区二区三区| 九九视频高清视频免费观看| 久久精品国产亚洲精品| 国产一级黄片儿免费看| 亚洲天堂中文字幕| 亚洲免费视频播放| 亚洲中文字幕无码亚洲成A人片| 成人au免费视频影院| 直接进入免费看黄的网站| 黑人大战亚洲人精品一区| 日本免费人成网ww555在线| 亚洲黄色在线网站| 成人人免费夜夜视频观看| 一级毛片试看60分钟免费播放| 亚洲精品无码高潮喷水在线| 16女性下面扒开无遮挡免费| 亚洲欧美成aⅴ人在线观看| 亚洲精品视频久久久| 免费播放一区二区三区| 中国亚洲呦女专区| 亚洲精品无码久久久| 91在线老王精品免费播放| 亚洲欧美日韩一区二区三区在线 | 免费视频中文字幕| 国产高清对白在线观看免费91| 亚洲国产综合91精品麻豆| 成人免费视频一区二区三区| 国产精品无码免费专区午夜| 午夜在线a亚洲v天堂网2019| 亚洲一区二区三区香蕉| 91视频国产免费| 国产在线观看无码免费视频| 色在线亚洲视频www|