小编Rya*_* G.的帖子

为什么x**3比x*x*x慢?

在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 numpy

25
推荐指数
2
解决办法
3848
查看次数

Python 3.4中的多处理是否已损坏?

我正在尝试在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)

python multiprocessing importerror python-3.x python-3.4

1
推荐指数
1
解决办法
2410
查看次数