3 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
你總是可以構(gòu)建一個(gè)懶惰的資源,比如
class GiveAResource():
resource = [None]
def get_resource(self):
if self.resource[0] is None:
self.resource[0] = MyResource()
return self.resource[0]
這樣的一個(gè)實(shí)例將在進(jìn)程之間很好地序列化,因此您可以將它作為要在工作人員上執(zhí)行的任何函數(shù)的輸入,然后調(diào)用.get_resource()它會(huì)獲得本地昂貴的資源(它將在稍后出現(xiàn)的任何工作人員上重新制作)。
此類(lèi)最好在模塊中而不是動(dòng)態(tài)代碼中定義。
這里沒(méi)有鎖定,因此如果多個(gè)線程在到目前為止還不需要資源的情況下同時(shí)請(qǐng)求資源,您將獲得多余的工作。

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
我猜你也numpy
用來(lái)操作數(shù)據(jù)(作為矩陣)?
如果依據(jù)numpy
, ans[i,:]
手段挑ith
的“行”ans
與所有的“列”的。注意,在處理 numpy 數(shù)組時(shí),我們應(yīng)該(幾乎)總是使用[i, j]
而不是[i][j]
. 如果您之前使用 Python 或 Java 操作矩陣,這可能與直覺(jué)相反。

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
我認(rèn)為在這種情況下 [] 表示可以通過(guò)定義getitem方法使用的類(lèi)對(duì)象的索引運(yùn)算符
class A:
def __getitem__(self, key):
pass
key 可以是任何字面意思。在您的情況下,“[1,:]”鍵是一個(gè)包含“1”和一個(gè)切片(無(wú),無(wú),無(wú))的元組。如果您的類(lèi)表示要通過(guò) [] 運(yùn)算符訪問(wèn)的多維數(shù)據(jù),則此類(lèi)鍵可能很有用。其他人建議的答案可能是一個(gè) numpy 數(shù)組:
以下是這種多維索引如何工作的快速示例:
class A:
values = [[1,2,3,4], [4,5,6,7]]
def __getitem__(self, key):
i, j = key
if isinstance(i, int):
i = slice(i, i + 1)
if isinstance(j, int):
j = slice(j, j + 1)
for row in self.values[i]:
print(row[j])
>>>a = A()
>>>a[:,2:4]
[3, 4]
[6, 7]
>>>a[1,1]
[5]
>>>a[:, 2]
[3]
[6]
添加回答
舉報(bào)