在我的 Precision 5520 上,以下計算大約需要 10.4 秒:
import time
before = time.time()
sum = 0
for i in range(1, 100000000):
sum = i
print(time.time() - before, sum)
在同一臺筆記本電腦上,以下操作僅需 5.2?? 秒:
import multiprocessing as mp
import time
def foo():
before = time.time()
sum = 0
for i in range(1, 100000000):
sum = i
print(time.time() - before, sum)
mp.Process(target=foo).start()
這個結果是一致的。事實上,即使我cpu_count
同時運行行程,它仍然有效(加速因子稍小)。
那么,為什么生成一個行程會使計算運行速度提高一倍呢?
uj5u.com熱心網友回復:
使計算快速的不是程序,而是在函式中運行計算。這是因為使用 CPython 解釋器訪問全域變數比訪問區域變數慢。如果你只是foo()
在同一個行程中運行,那么計算時間也會減少兩倍。這是一個例子:
import time
def foo():
before = time.time()
sum = 0
for i in range(1, 100000000):
sum = i
print(time.time() - before, sum)
# Slow (8.806 seconds)
before = time.time()
sum = 0
for i in range(1, 100000000):
sum = i
print(time.time() - before, sum)
# Fast (4.362 seconds)
foo()
注意覆寫內置函式sum
有點危險,因為它可能會破壞使用它的代碼并導致奇怪的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/470124.html