我想集成並行處理以使我的for循環運行得更快。Python:Joblib中的並行處理使代碼運行速度更慢
但是,我注意到它只是讓我的代碼運行得更慢。請參閱下面的示例,其中我使用joblib
,並在隨機整數列表上使用了簡單函數。請注意,沒有的並行處理運行速度快於和。
任何有關正在發生的事情的見解?
def f(x):
return x**x
if __name__ == '__main__':
s = [random.randint(0, 100) for _ in range(0, 10000)]
# without parallel processing
t0 = time.time()
out1 = [f(x) for x in s]
t1 = time.time()
print("without parallel processing: ", t1 - t0)
# with parallel processing
t0 = time.time()
out2 = Parallel(n_jobs=8, batch_size=len(s), backend="threading")(delayed(f)(x) for x in s)
t1 = time.time()
print("with parallel processing: ", t1 - t0)
我得到以下輸出:
without parallel processing: 0.0070569515228271484
with parallel processing: 0.10714387893676758
並行處理,因爲涉及到更復雜的安裝程序的額外開銷。您通常不希望並行完成需要微秒的任務。 – Muposat
我也試過它在一個更復雜的模糊匹配函數,它仍然花了很長時間 –
[爲什麼以下簡單的並行化代碼比Python中的簡單循環慢得多?](https://stackoverflow.com/questions/46727090/why-the-following-simple-parallelized-code-slow-than-a-simple-loop-in) – user3666197