python中用for迴圈乙個有五萬多條目的大列表,如何縮短執行時間

時間 2021-05-31 17:41:35

1樓:那麼機智的瑞哥

不知道你這個select裡面會做什麼,假如你這個select也在做迴圈那肯定是沒效率的。

提兩點建議吧:

1、調整一下迴圈順序

2、python有個yeild操作,總感覺可以在你這裡面用到

2樓:周球尚

方法:使用map函式,不要使用for迴圈

因為不知道你的 select_i 和 Df0 以及 Df1 具體是什麼,大概你的 Df0 本身也是個dataframe之類的,如果Df0資料量大,且在 select_i 裡面進行了 for 迴圈那也可能會造成執行緩慢這個由於你沒貼出來,需要自己去排查。

我隨意構造了乙個 select_i 用於測試import

time

NameList=[

"abcd"

fori

inrange

(100000

)]def

select_i(a

,b,c

):returna+

b+ctic1

=time

.time

()Df_s=

fori

inNameList:Df

=select_i

("Df0"

,"Df1",i

)Df_s

.insert

(NameList

.index(i

),Df

)tic2

=time

.time

()print

("耗時: "

,tic2

-tic1

)print

(Df_s[0

:10])這樣相當於你現在的方法,在的筆記本上執行結果:

耗時: 2.804320812225342使用map函式的方法:

import

time

NameList=[

"abcd"

fori

inrange

(100000

)]def

select_i2(c

):return

"Df0"

+"Df1"+c

tic1

=time

.time

()Df_s

=map

(select_i2

,NameList

)Df_s

=list

(Df_s

)tic2

=time

.time

()print

("耗時: "

,tic2

-tic1

)print

(Df_s[0

:10])在的筆記本上執行結果:

耗時: 0.036974191665649414

3樓:爆炸就是藝術

迭代本身的開銷並不大。

首先改用enumerate(list)迭代獲取下標,不要用list.index。

其次你的操作裡面都傳入了兩個想同dataframe作為引數,如果這兩在迭代中不變的話,可以將一些中間結果快取起來。

4樓:enter回車鍵

多程序確實可以加快執行速度,學習一下multiprocessing模組。

給你乙個簡單的案例,研究一下,然後慢慢折騰。

# 匯入 multiprocessing 模組 : 多程序import

multiprocessing

import

time

defjc1

():foriin

range

(100

):print(i

+1)time

.sleep(1

)def

jc2():

forj

inrange(50

):print(j

*10)time

.sleep(2

)if__name__

=="__main__"

:# 建立程序物件

jincheng1

=multiprocessing

.Process

(target

=jc1

)jincheng2

=multiprocessing

.Process

(target

=jc2

)# 啟動程序

jincheng1

.start

()jincheng2

.start

()可以把你的大任務分成多個小任務,在多個程序去執行。

為什麼「乙個大學」英語中用 a university

university前面應該用a還是用an,這是英語中乙個關於不定冠詞的問題。不定冠詞有兩個,乙個是a,乙個是an.那麼university前面到底應該用a還是用an呢?不要著急,聽老黃慢慢道來。首先,英語中有定冠詞the和不定冠詞a,an.一般地,只有在可數名詞前面才會加上冠詞,如果在不可數名詞前...

我陷入了乙個死迴圈嗎

這個男人可以主動單身,這樣就可以擺脫死迴圈啦。言歸正傳,房子不管結不結婚都很重要吧,不只是物質上的概念,更多的是心靈情感的寄託。所以努力賺錢買房吧。至於單身不單身,這也不是很重要。 喵喵Luo 我不知道別人怎麼想的,但是作為乙個女生。我覺得我自己的看法是也不一定要男方買房子才能結婚吧。作為乙個女生,...

能給乙個可以單曲迴圈的嘛?

像風十七 1 二零三 毛不易 2 好幾年 劉心 3 夜的鋼琴曲五 鄧壬鑫 4 甘雨 5 只要平凡 張杰 張碧晨 6 世間美好與你環環相扣 柏松 7 生而為人 尚士達 8 後來我們 後來remix 歪丁 9 Where is the love remix 勵陽10 You Are Beautiful ...