我在我的 Precision 5520 筆記本電腦和 Google Compute Engine 的 c2-standard-4 上運行以下代碼:
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)
for i in range(mp.cpu_count()):
mp.Process(target=foo).start()
在這兩種情況下,mp.cpu_count()都是 4。然而,出乎我意料的是,筆記本電腦上的每次計算需要 5.2 秒,而在 GCE 上需要 8.6 秒。
筆記本電腦運行 Xeon E3-1505M v6 @ 3GHz。它是一個強大的 CPU,但我認為筆記本電腦的 CPU 無法與 Google HPC 服務器上的 CPU 相提并論(例如,由于熱量限制)。
筆記本電腦上的 Python 版本是 3.8.5。GCE 有 Python 版本 3.9.2。
為什么會這樣?
更新在@John Hanley 的回復之后,我更改了 Google Cloud Platform 的配置,因此每個內核只使用一個 vCPU,時間現在是 4 秒而不是 8.6 秒。這令人驚訝,因為它似乎破壞了使用超執行緒的整個想法......
uj5u.com熱心網友回復:
在您的筆記本電腦上,每個 CPU 內核都是兩個超執行緒。
在云中,一個虛擬化 CPU (vCPU) 就是一個超執行緒。
給定相同的主板、時鐘速度、記憶體等,您的筆記本電腦的每個 CPU 的等效 CPU 功率是其兩倍。在云中配置 VCPU 時,您配置的是物理 CPU 內核的一半。
在 Compute Engine 上,每個虛擬 CPU (vCPU) 都作為一個可用 CPU 處理器上的單個硬體多執行緒實作。在英特爾至強處理器上,英特爾超執行緒技術支持在每個物理處理器內核上運行多個應用執行緒。您可以使用這些多執行緒中的一個或多個作為 vCPU 配置您的 Compute Engine 虛擬機實體。VM 實體的具體大小和形狀決定了它的 vCPU 數量。
谷歌云 CPU 平臺
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/474478.html
標籤:Python 表现 谷歌云平台 python-多处理
