擅长:python、mysql、java
<p>要补充上述内容:</p>
<p>Ray<a href="https://docs.ray.io/en/latest/multiprocessing.html" rel="nofollow noreferrer">Distributed multiprocessing.Pool</a>支持固定大小的Ray Actor池,以便于并行化</p>
<pre><code>import numpy as np
import time
import ray
from ray.util.multiprocessing import Pool
pool = Pool()
def f(x):
# time.sleep(1)
return 1.5 * 2 - x
def my_func_par(large_list):
pool.map(f, large_list)
def my_func_seq(large_list):
[f(i) for i in large_list]
my_list = np.arange(1, 10000)
s = time.time()
my_func_par(my_list)
print('Parallel time: ' + str(time.time() - s))
s = time.time()
my_func_seq(my_list)
print('Sequential time: ' + str(time.time() - s))
</code></pre>
<p>使用上面的代码,<code>my_func_par</code>运行得更快(大约0.1秒)。如果您使用代码并通过类似<code>time.sleep</code>的方式使<code>f(x)</code>变慢,您可以看到多处理的明显优势</p>