相关疑难解决方法(0)

Python多处理Numpy随机

在多处理调用的函数中,numpy ndarray的作用域是否有不同的作用?这是一个例子:

使用python的多处理模块我正在调用一个函数:

for core in range(cores):
    #target could be f() or g()
    proc = mp.Process(target=f, args=(core))
    jobs.append(proc)
for job in jobs:
    job.start()
for job in jobs:
    job.join()

def f(core):
    x = 0
    x += random.randint(0,10)
    print x

def g(core):
    #Assume an array with 4 columns and n rows
    local = np.copy(globalshared_array[:,core])
    shuffled = np.random.permutation(local)
Run Code Online (Sandbox Code Playgroud)

调用时f(core),x变量是进程的本地变量,即.它按预期打印一个不同的随机整数.这些从不超过10,表明x=0在每个过程中.那是对的吗?

调用g(core)和置换数组的副本将返回4个相同的'shuffled'数组.这似乎表明工作副本不是本地子进程.那是对的吗?如果是这样,除了使用sharedmemory空间之外,当需要从共享内存空间填充时,是否可以让ndarray成为子进程的本地进程?

编辑:

改变g(core)添加随机整数似乎具有所需的效果.数组显示不同的值.必须发生的permutation事情是随机排序列(每个子进程的本地)相同的......想法?

def g(core):
    #Assume an array with 4 columns and …
Run Code Online (Sandbox Code Playgroud)

python numpy multiprocessing

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

标签 统计

multiprocessing ×1

numpy ×1

python ×1