gpt4 book ai didi

python - 如何将 numpy 数组从 Python 传递给 Golang 函数

转载 作者:行者123 更新时间:2023-12-05 08:11:43 24 4
gpt4 key购买 nike

我正在尝试使用 Golang 创建库以在 Python 中工作。但我有一个问题:我无法将 numpy 数组传递给 go 函数。请帮我解决问题。

我的代码:

ma​​in.go:

package main

import "C"
import "fmt"

type Matrix [][] int

//export Mass
func Mass(data Matrix) int {
var sum int=0
for i, x:= range data {
for j, _ := range x {
sum+=data[i][j]
}
}
return sum
}

func main() {
}

示例:

from ctypes import *
import numpy as np

mysum = cdll.LoadLibrary(r'D:\tests\go\sum.dll')

array_2d_int = np.ctypeslib.ndpointer(dtype=c_int32, ndim=2,
flags='CONTIGUOUS')

def mass(a):
mysum.Mass.argtypes = [array_2d_int]
mysum.Mass.restype = c_int32
return mysum.Mass(a)

编译命令行:

go build -buildmode=c-shared -o sum.dll main.go

当我从 dll 库中调用函数时:

from ex import mass
import numpy as np

a=np.array([[1,2],[3,4]])

print(mass(a))

我有错误:

unexpected fault address 0x1b216000
fatal error: fault
[signal 0xc0000005 code=0x0 addr=0x1b216000 pc=0x6ac92c1f]

goroutine 17 [running, locked to thread]:
....

最佳答案

我不知道这是不是你要找的。

  1. 将生成的 numpy 数组写入文件
  2. 在你的go代码中读取文件

批量执行相关命令

关于python - 如何将 numpy 数组从 Python 传递给 Golang 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52785180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com