![](/img/trans.png)
[英]How get parent object reference in python with out passing argument 'self'?
[英]Python argument passing overhead and object reference
我用 Python 構建了幾個線程服務器項目,同步總是一個令人煩惱的問題。
通常,當工作從一個線程傳遞到另一個線程時,需要從多個線程訪問的數據結構中找到相關的對象和信息。 與鎖等同步是規范的方法,但通常很難確定您的同步實際上是准確的。 這可以通過沿處理管道攜帶相關對象來規避,即使在不需要它們的地方也是如此。
由於這些通常是 object 引用,它會增加多少開銷? 從邏輯上講,它不應該真的如此,這是一種常見的做法嗎?
如果有更多的上下文,這個問題會更容易回答。 但總的來說,在作業負載中傳遞一些 object 引用並沒有明顯的時間成本。 與每個 OS 線程相關的 memory 開銷可能大於線程本地引用消耗的所有 memory。 主要風險是持有不必要的引用會阻止垃圾收集的發生,但如果您將這些對象存儲在全局數據結構中,也會發生這種情況。
與鎖等同步是規范的方法,但通常很難確定您的同步實際上是准確的。
使用鎖通常很容易確保單個數據結構不受數據競爭的影響。 您只需要使用 lock-unlock 調用來包裝每個讀取和寫入操作。 雖然這會降低競爭下的性能,但相比之下,這將使線程本地存儲更快。
只要您不為每個線程都制作大量數據結構的深層副本,就可以了。 通常鼓勵將作業上下文保存在線程本地存儲中,可以在不與其他線程爭用的情況下對其進行訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.