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
("耗時: "
,tic2
-tic1
(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
("耗時: "
,tic2
-tic1
(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 ...