對於我的碩士論文,我需要分析虹膜識別數據。因此我創建了大約400個模板。每個模板必須與每個其他模板進行比較,從而產生約160,000個匹配結果。Android start 160.000 AsnycTasks
這些結果需要上傳到我的Azure Easy Table。我真的不知道從哪裏開始,因爲ThreadPoolExecutor無法並行處理超過128個線程。
做這種事情的正確方法是什麼?時間不是真正的問題。
這是我目前的做法:
for (int i = 0; i < mIrisEntries.size(); i++){
match(i);
}
public void match(final int position) {
IrisEntry inputEntry = mIrisEntries.get(position);
// takes about 10ms
List<IrisResult> results = mUSITHelper.matchEntries(inputEntry, mIrisEntries, this);
for (IrisResult s : results) {
try {
Thread.sleep(1000);
mAzureTableManager.addIrisResult(s); // here the AsyncTask is started
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
,這個方法工作了一段時間,。但然後系統開始殺死所有線程,並取消上傳。
處理160,000個結果中的一個需要多長時間?或者,如果您願意,您需要多長時間來處理所有160,000個結果,一次完成一項? – CommonsWare
通過處理您的意思是上傳或創建一個結果?兩個模板的匹配需要大約10 ms – 4ndro1d
「通過處理你的意思是上傳或創建一個結果?」 - 我不知道,因爲我不知道你的應用程序。你是否對160,000個匹配結果中的每一個進行一次Azure上傳操作?或者你在所有160,000場比賽結束時做了一場?還是其他的東西(例如,分批上傳)? – CommonsWare