在NumPy中,x*x*x比x**3或甚至np.power(x,3)快一个数量级.
x = np.random.rand(1e6)
%timeit x**3
100 loops, best of 3: 7.07 ms per loop
%timeit x*x*x
10000 loops, best of 3: 163 µs per loop
%timeit np.power(x, 3)
100 loops, best of 3: 7.15 ms per loop
Run Code Online (Sandbox Code Playgroud)
关于为什么会发生这种行为的任何想法?据我所知,三个产生相同的输出(用np.allclose检查).
我正在尝试在Python 3中使用多处理模块.但是,每次我尝试设置池时,都会得到以下回溯.
Traceback (most recent call last):
File "testmp.py", line 7, in <module>
with Pool(5) as p:
File "/usr/lib/python3.4/multiprocessing/context.py", line 118, in Pool
context=self.get_context())
File "/usr/lib/python3.4/multiprocessing/pool.py", line 150, in __init__
self._setup_queues()
File "/usr/lib/python3.4/multiprocessing/pool.py", line 243, in _setup_queues
self._inqueue = self._ctx.SimpleQueue()
File "/usr/lib/python3.4/multiprocessing/context.py", line 110, in SimpleQueue
from .queues import SimpleQueue
File "/usr/lib/python3.4/multiprocessing/queues.py", line 20, in <module>
from queue import Empty, Full
ImportError: cannot import name 'Empty'
Run Code Online (Sandbox Code Playgroud)
可以轻松触发此操作的最简单代码是多处理模块文档中的第一个示例.
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
with …Run Code Online (Sandbox Code Playgroud)