小编zaz*_*oma的帖子

python numba指纹错误

我正在尝试numba来优化一些代码.我已经完成了0.26.0用户指南(http://numba.pydata.org/numba-doc/0.26.0/user/jit.html)第1.3.1节中的初始示例并获得了预期的结果,所以我不认为问题是安装.

这是我的代码:

import numba
import numpy
import random

a = 8
b = 4

def my_function(a, b):
    all_values = numpy.fromiter(range(a), dtype = int)
    my_array = []
    for n in (range(a)):
        some_values = (all_values[all_values != n]).tolist()
        c = random.sample(some_values, b)
        my_array.append(sorted([n] + c))
    return my_array

print(my_function(a, b))

my_function_numba = numba.jit()(my_function)

print(my_function_numba(a, b))
Run Code Online (Sandbox Code Playgroud)

从my_function调用打印出预期结果后,返回以下错误消息:

ValueError                                Traceback (most recent call last)
<ipython-input-8-b5d8983a58f6> in <module>()
     19 my_function_numba = numba.jit()(my_function)
     20 
---> 21 print(my_function_numba(a, b))

ValueError: cannot compute fingerprint of empty list
Run Code Online (Sandbox Code Playgroud)

空列表的指纹?

python-3.x numba

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

通过并发填充numpy数组

我正在尝试使用多处理来填充大型numpy数组。我已经阅读了文档中的并发期货示例,但是对修改用法的理解还不够。

这是我想做的事情的简化版本:

import numpy
import concurrent.futures

squares = numpy.empty((20, 2))

def make_square(i, squares):
    print('iteration', i)
    squares[i, 0], squares[i, 1] = i, i ** 2

with concurrent.futures.ProcessPoolExecutor(2) as executor: 
    for i in range(20):
        executor.submit(make_square, i, squares)
Run Code Online (Sandbox Code Playgroud)

输出运行类似:

iteration 1
iteration 0
iteration 2
iteration 3
iteration 5
iteration 4
iteration 6
iteration 7
iteration 8
iteration 9
iteration 10
iteration 11
iteration 12
iteration 13
iteration 15
iteration 14
iteration 16
iteration 17
iteration 18
iteration 19
Run Code Online (Sandbox Code Playgroud)

很好地证明了该功能正在同时运行。但是squares数组仍然为空。

填充squares数组的正确语法是什么?

其次,使用.map会更好吗?

提前致谢! …

numpy python-3.x concurrent.futures

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

标签 统计

python-3.x ×2

concurrent.futures ×1

numba ×1

numpy ×1