Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用numba并行生成任意长度的随机向量_Python_Numpy_Parallel Processing_Numba - Fatal编程技术网

Python 用numba并行生成任意长度的随机向量

Python 用numba并行生成任意长度的随机向量,python,numpy,parallel-processing,numba,Python,Numpy,Parallel Processing,Numba,我想生成随机向量的形式 [i如果是随机均匀(0,1)prange是一个numba函数。键入错误只是来自numba的一般错误,表示在编译函数时遇到了问题。真正的问题是您正在尝试调用未声明的函数。您需要像这样使用prange函数: from numba import njit, int64, float64 import numba import numpy as np @njit([int64[:](float64[:], int64)]) def rand_coin(freqs,r):

我想生成随机向量的形式


[i如果是随机均匀(0,1)
prange
是一个numba函数。键入错误只是来自numba的一般错误,表示在编译函数时遇到了问题。真正的问题是您正在尝试调用未声明的函数。您需要像这样使用
prange
函数:

from numba import njit, int64, float64
import numba
import numpy as np

@njit([int64[:](float64[:], int64)])
def rand_coin(freqs,r):
    return np.arange(r)[np.random.uniform(0,1,size=r)<=freqs] 

@njit(parallel=True)
def rand_coins(freqs,n):
    r = freqs.shape[0]
    return [rand_coin(freqs,r) for i in numba.prange(n)] #                     **
来自numba import njit、int64、float64
进口麻木
将numpy作为np导入
@njit([int64[:](float64[:],int64)])
def兰特币(频率,r):

返回np.arange(r)[np.random.uniform(0,1,size=r),这在我上面的示例中只是输入错误。运行代码会产生一个
双重免费或损坏
错误(在上面的玩具示例的运行时)--它对你有用吗?它对be有用,但我怀疑它与列表理解有关。我在谷歌上查找了它,发现了这个github问题:。当你这样使用理解时,
prange
似乎是必要的。顺便问一句:兰特硬币。平行诊断(级别=4)确认平行部分吗使用np.random.*()进行“环绕”,其中严格的re-[SERIAL]-由于同时维护状态机种子和伪随机生成序列的可再现性,因此必须进行同步化?@user3666197当我执行上述
rand_coins
函数时,我立即得到一个双重无错误或损坏错误,后面跟着一个SIGABRT,因此我无法检查并行诊断——很可能与其中一个他给我写了两份报告
from numba import njit, int64, float64
import numba
import numpy as np

@njit([int64[:](float64[:], int64)])
def rand_coin(freqs,r):
    return np.arange(r)[np.random.uniform(0,1,size=r)<=freqs] 

@njit(parallel=True)
def rand_coins(freqs,n):
    r = freqs.shape[0]
    return [rand_coin(freqs,r) for i in numba.prange(n)] #                     **