簡體   English   中英

使用python中的大數據,比map()更快的方法(通過stdin.readlines())

[英]Faster way than map() for big data (via stdin.readlines()) in python

我已經編寫了一段代碼,其中我必須處理很多來自stdin的行,將它們拆分,然后將值轉換為整數(這是典型的編程挑戰)。

我的腳本需要大約20秒才能完成50,000條線,但是使用cProfile時,我發現所有的地圖調用已經准備就緒需要大約8秒的時間(我對每行調用split和map,對我來說效率低下)。

這是我的工作:

inp = [i[0:-1] for i in stdin.readlines()][1:]
inp = [map(int, i.split()) for i in inp]

還有什么更蟒蛇的方式做到這一點?

輸入看起來像:

2        # number of testcases
2        # depth of following numeric triangle
1
1 2
3        # depth of next numeric triangle
1
1 2
1 2 3

非常感謝您的幫助!

使用numpy.loadtxt或numpy.genfromtxt。 這將數字加載到數組中的速度比用Python中的循環加載它們快得多,因為實現是使用編譯語言編寫的,並且高度優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM