2012-11-30 48 views
1

我試圖解析包含序列化結構序列的二進制數據的長序列。我能夠將內存中的數據作爲整數列表(我們稱之爲主列表)。將子列表傳遞給函數的有效方式

爲了解析主列表中包含的不同字段,我創建了一些函數&類。我的問題是將主列表的子範圍傳遞給這些函數的最有效方式是什麼。

我是新來的Python,所以如果我說的話真的錯了,請原諒我。

  • 如果我這樣做:parse_foo(main_list[n:N])我想,一個新的列表將被創建。如果我沒有錯,這種方法將是非常低效的。順便說一下,我不會隨時修改主要列表。
  • 我想我可以使用迭代器(iterator.next())。但問題是我無法隨機訪問元素。

評論&建議總是比歡迎。

回答

0

您可以設置功能,以便它們可以使用主列表以及開始和結束索引。

+0

是的,但我不哪些功能和課程,看看整個主列表。他們應該只看到他們正在解析的流。這也意味着額外的工作:計算主列表中所有內容的絕對位置,這是容易出錯的。 – user1192525

0

爲了評估效率,您應該利用discProfile模塊。

cProfile docs

python -m cProfile myscript.py 

dis docs

>>> dis.dis(myfunc) 
    2   0 LOAD_GLOBAL    0 (len) 
       3 LOAD_FAST    0 (alist) 
       6 CALL_FUNCTION   1 
       9 RETURN_VALUE 
+0

感謝您的信息,現在我需要一種正確的方式將信息傳遞給解析不同領域的函數:) – user1192525

+0

如果根據問題的建議對「效率」進行「正確」評估,請實施並注意影響字節碼以及熱點在探查器中的位置。 –