5
我目前正在試用Actor-concurreny(在Python上),因爲我想了解更多。所以我選擇了pykka
,但是當我測試的時候,它比多了一半,慢了作爲一個正常的功能。pykka - 演員很慢?
該代碼只是看它是否工作;它並不意味着優雅。 :)
也許我做錯了什麼?
from pykka.actor import ThreadingActor
import numpy as np
class Adder(ThreadingActor):
def add_one(self, i):
l = []
for j in i:
l.append(j+1)
return l
if __name__ == '__main__':
data = np.random.random(1000000)
adder = Adder.start().proxy()
adder.add_one(data)
adder.stop()
這將運行沒有這麼快:
time python actor.py
real 0m8.319s
user 0m8.185s
sys 0m0.140s
而且現在的假 '正常' 的功能:
def foo(i):
l = []
for j in i:
l.append(j+1)
return l
if __name__ == '__main__':
data = np.random.random(1000000)
foo(data)
給出了這樣的結果:
real 0m3.665s
user 0m3.348s
sys 0m0.308s
我該如何提高效率?我從numpy陣列中創建了一個元組,但獲得的並不是很高。 (例如:分發循環高效的服務角色。) – Themerius
我更新了我的答案。基本上設計更具挑戰性,但它具有更多的好處,比如在一組機器上執行。 –
謝謝,我現在嘗試構建一些東西。 – Themerius