[英]Python weakref on function return values
是否可以從函數返回值創建weakref,如果是這樣的話?
或者在調用func weakref.proxy(func)時將返回值包裝在weakref.proxy中
import pandas import weakref mkt_df = weakref.proxy(pandas.read_csv(filepath_or_buffer='filepath', delimiter=',')) print(mkt_df)
我無法讓它們工作,因為我在代理時遇到引用錯誤ReferenceError:弱引用的對象不再存在
這是完全可能的,但它也沒用。 除非函數在其他地方存儲強引用(內部緩存等),否則當您在weakref.ref
/ weakref.proxy
包裝調用時,會發生以下情況:
ref
/ proxy
構造函數(將強引用所有權轉移到弱引用構造函數作為局部變量),創建弱引用 簡單地說,弱引用只有在你期望強引用會在其他地方停留一段時間時才有用; 在這種情況下,你保證在正常情況下它不會,所以弱引用是沒用的。
如果你想要一個有用的弱引用,你需要在某處存儲一個強引用,然后從中創建一個弱引用,例如:
mkt_df_strong = pandas.read_csv(filepath_or_buffer='filepath', delimiter=',')
mkt_df_weak = weakref.proxy(mkt_df_strong)
# The weak reference now remains useful until the strong reference disappears
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.