Python np矢量化不使用核心

Python np矢量化不使用核心,python,python-3.x,multithreading,numpy,multiprocessing,Python,Python 3.x,Multithreading,Numpy,Multiprocessing,我将python 3与numpy一起使用,numpy操作似乎很好地使用了我的所有核心,但当我使用带有np.vectorize的函数时,例如: f = lambda x: (x*1000) / 20 * 15 + 3 v_func = np.vectorize(f) v_func(arr) 它长时间只使用一个内核(根据cpu利用率图表) 如何将其与numpy的多核功能结合使用 这可以使用numexpr库通过以下代码完成: import numexpr as ne import numpy a

我将python 3与numpy一起使用,numpy操作似乎很好地使用了我的所有核心,但当我使用带有np.vectorize的函数时,例如:

f = lambda x: (x*1000) / 20 * 15 + 3
v_func = np.vectorize(f) 
v_func(arr) 
它长时间只使用一个内核(根据cpu利用率图表)


如何将其与numpy的多核功能结合使用

这可以使用numexpr库通过以下代码完成:

import numexpr as ne
import numpy as np

data = list(range(1000))
arr = np.array(range(100000))
b = ne.evaluate("(arr * 1000) / 25 * 15 + 3")
print(b)

此库正在创建一个矢量化函数,该函数确实利用了多线程功能,正如所解释的那样

lambda和
矢量化
实际上都不是numpy意义上的矢量化
vectorize
是一种名称混乱的便利方法,基本上是python
for
循环。
arr=(arr*1000)/25*15+3
是矢量化的。将数组视为标量。出于某种原因,许多人中途停止阅读
np.vectorize
文档,并错过了有关性能的免责声明<代码>实现本质上是一个for循环。好的,那么有没有一种方法可以使用现有的numpy工具实现更有效的东西呢?请查看
numexpr
模块。