執行緒安全,偏函式和物件導向補充

2022-05-17 02:52:06 字數 1980 閱讀 5474

極快的解決阻塞,保證公共物件的安全性。

浪費非常嚴重的資源

時空轉換:使用空間換取時間

原理:

class foo(object):

pass

f=foo()

f.num=0

dic={}

def add(i):

f.num=i

# print(get_ident())

dic[get_ident()]=deepcopy(f)

time.sleep(1)

print(dic[get_ident()].num)

for i in range(20):

task=thread(target=add,args=(i,))

task.start()

使用local:

class foo(local):

pass

f=foo()

f.num=0

def add(i):

f.num=i

# print(get_ident())

time.sleep(1)

print(f.num)

for i in range(20):

task=thread(target=add,args=(i,))

task.start()

將原函式和原函式接收的引數一併存放. 返回新函式,在執行新函式時,將引數傳入原函式中一併執行
from functools import partial

def abfunc(a,b):

return a+b

newab=partial(abfunc,2,3)

print(newab)

print(newab())

__call__方法

類例項化物件加()  執行類的__call__方法
class foo(object):

def __call__(self, *args, **kwargs):

# print("aaaa")

return "bbb"

f=foo()

f()

屬性的建立,賦值,提取

建立

class foo(object):

pass

f=foo()

f.name="alexdsb"

_setattr_

class foo(object):

pass

f=foo()

f.name=123

使用類例項化物件.屬性的時候呼叫的是__setattr__

_getattr_

class foo(object):

pass

f=foo()

f.name=123

f.name

在類裡沒有name屬性,沒有靜態屬性,在__init__沒有初始化name方法時.使用例項化物件.屬性名 是呼叫__getattr__ (__getattribute__)

_setitem_

class foo(object):

pass

f=foo()

f[name]=123

使用f[name]=123 增加屬性時,呼叫__setitem__方法

_getitem_

class foo(object):

pass

f=foo()

f[name]=123

f[name]

使用f[name] 獲取屬性時,呼叫__getitem__方法

請求是如何到達flask應用的

Python基礎語法十五 re模組和物件導向

compile 正規表示式 編譯正規表示式,建立正規表示式物件 re obj compile r d re obj.fullmatch 234 1.fullmatch 正規表示式,字串 讓整個字串和正規表示式進行匹配 2.match 正規表示式,字串 匹配字串開頭 如果匹配失敗,結果是none,如果...

同步函式解決執行緒安全

需求 乙個銀行賬戶 5000 元,夫妻二人一人拿著存摺,一人拿著卡,每次只能取 1000塊。class bankthread extends thread override public synchronized void run else public class demo 同步函式要注意的事項 ...

執行緒安全 可重入函式

執行緒安全就是說多執行緒訪問同一 不會產生不確定的結果。編寫執行緒安全的 是依靠執行緒同步 執行緒安全一般都涉及到synchronized 就是一段 同時只能有乙個執行緒來操作 不然中間過程可能會產生不可預製的結果 一般說來,確保執行緒安全的方法有這幾個 競爭與原子操作 同步與鎖 可重入 過度優化。...