新聞中心
Python代碼在實際應用中還是比較簡捷的。給計算機語言一族在計算機語言實際應用帶來一些好處,下面就簡單的說明一下在Python代碼標號中所對應代碼中的注釋處的詳細介紹。

在梁平等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設計、外貿(mào)營銷網(wǎng)站建設 網(wǎng)站設計制作按需網(wǎng)站建設,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站制作,成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設,梁平網(wǎng)站建設費用合理。
1. 判斷字符串的長度加上PyStringObject本身的大小(即整個變長對象PyStringObject的實際大小)后, 是否超過系統(tǒng)限制的最大大小. 書上的Python舊版代碼中僅判斷size > PY_SSIZE_T_MAX, 也就是沒有考慮對象自身的大小, 是不完善的.
2. 當需要分配的內(nèi)存超過系統(tǒng)限制的上限時, 拋出異常PyExc_OverflowError, 即溢出.書上的Python代碼舊版代碼沒有拋出異常.
3. 對于長度為0的空串(即"", 而非NULL), 若nullstring已經(jīng)被初始化, 則返回nullstring. 這是intern機制的一部分. 書上的Python舊版代碼沒有對nullstring增加引用計數(shù).
4. 對于長度為1的字符串, 若字符表中該字符對象已經(jīng)初始化, 則返回該字符對象. 這是intern機制的一部分. 書上的Python代碼舊版代碼沒有對該字符對象增加引用計數(shù).
5. 若申請內(nèi)存空間失敗, 則調用PyErr_NoMemory()處理. 書上的Python舊版代碼中沒這一部分.
6. 使用Py_MEMCPY代替直接使用memcpy. 貼一下Py_MEMCPY的代碼:
- [Include/pyport.h]
- /* Py_MEMCPY can be used instead of memcpy in cases
where the copied blocks- * are often very short. While most platforms have
highly optimized code for- * large transfers, the setup costs for memcpy are
often quite high. MEMCPY- * solves this by doing short copies "in line".
- */
- #if defined(_MSC_VER)
- #define Py_MEMCPY(target, source, length) do { \
- size_t i_, n_ = (length); \
- char *t_ = (void*) (target); \
- const char *s_ = (void*) (source); \
- if (n_ >= 16) \
- memcpy(t_, s_, n_); \
- else \
- for (i_ = 0; i_ < n_; i_++) \
- t_[i_] = s_[i_]; \
- } while (0)
- #else
- #define Py_MEMCPY memcpy
- #endif
看注釋應該就明白了, Py_MEMCPY是為跨平臺優(yōu)化而提供的一個宏. 因為在有些平臺上, 調用mempcy的代價比較高, 所以對于小數(shù)據(jù)量的拷貝就原地展開成循環(huán). 那Python代碼覺得哪些平臺需要這樣的優(yōu)化呢? 看到_MSC_VER了吧, 這個是M$的C編譯器特有的宏, 看來, 需要特別優(yōu)化的就是Windows下了.
當前標題:Python代碼在實際應用中的方案簡介
本文網(wǎng)址:http://www.5511xx.com/article/ccoopso.html


咨詢
建站咨詢
