<p>你可能想看看<a href="https://ipyparallel.readthedocs.io/en/latest/index.html" rel="nofollow noreferrer">IPython Parallel</a>。它允许您在负载平衡(本地)集群上轻松运行函数</p>
<p>对于这个小示例,请确保已安装<a href="https://ipyparallel.readthedocs.io/en/latest/index.html" rel="nofollow noreferrer">IPython Parallel</a>、<a href="https://numpy.org/" rel="nofollow noreferrer">NumPy</a>和<a href="https://pillow.readthedocs.io" rel="nofollow noreferrer">Pillow</a>。要运行示例,首先需要启动集群。要启动具有四个并行引擎的本地集群,请在终端中键入(一个引擎对应一个处理器核心似乎是一个合理的选择):</p>
<pre><code>ipcluster 4
</code></pre>
<p>然后,您可以运行以下脚本,该脚本在给定目录中搜索jpg图像,并计算每个图像中的像素数:</p>
<pre><code>import ipyparallel as ipp
rc = ipp.Client()
with rc[:].sync_imports(): # import on all engines
import numpy
from pathlib import Path
from PIL import Image
lview = rc.load_balanced_view() # default load-balanced view
lview.block = True # block until map() is finished
@lview.parallel()
def count_pixels(fn: Path):
"""Silly function to count the number of pixels in an image file"""
im = Image.open(fn)
xx = numpy.asarray(im)
num_pixels = xx.shape[0] * xx.shape[1]
return fn.stem, num_pixels
pic_dir = Path('Pictures')
fn_lst = pic_dir.glob('*.jpg') # list all jpg-files in pic_dir
results = count_pixels.map(fn_lst) # execute in parallel
for n_, cnt in results:
print(f"'{n_}' has {cnt} pixels.")
</code></pre>