最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python調(diào)用golang代碼詳解

 更新時間:2024年02月11日 10:37:12   作者:hllyzms  
這篇文章主要給大家介紹了關(guān)于Python調(diào)用golang代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

有些時候因為效率問題部分代碼會 使用Python調(diào)用go的編譯生成動態(tài)鏈接庫

go 代碼示例

//add.go
package main

import "C"

//export Add
func Add(a, b int) int {
	return a + b
}

//export Addstr
func Addstr(a, b *C.char) *C.char {
	merge := C.GoString(a) + C.GoString(b)
	return C.CString(merge)
}

// go build -buildmode=c-shared -o add.so add.go
func main() {
}

注意 需要注意的是,這里的注釋//export Addstr //export Add 不能省略,因為在編譯成.so文件的時候,編譯器會尋找這個注釋。同時,為了能正常編譯,我們也必須導(dǎo)入C這個包。

## 特別注意 //和export 中間不能有空格

注意: 只有int可以不需要轉(zhuǎn)換,直接在go和C直接互相調(diào)用

對于不同的類型,需要使用cgo中定義的方法轉(zhuǎn)換,具體可以參考golang-cgo文檔。

比如string需要用C.char來傳遞,C.GoString(s)可以將C.char類型轉(zhuǎn)換為string,反之C.CString可以把string類型轉(zhuǎn)為 *C.char

Python是利用ctypes來跟so模塊進(jìn)行交互,其中存在著一個代碼的翻譯過程,包括數(shù)據(jù)類型的翻譯,如果需要傳參獲取接收返回值,需要在golang中將參數(shù)按照下表對應(yīng),定義成C語言的數(shù)據(jù)類型。
python,ctypes , c 對應(yīng)類型參考 python 官方文檔:https://docs.python.org/3.5/library/ctypes.html

把代碼保存為fib.go,然后我們使用如下命令進(jìn)行編譯:

go build -buildmode=c-shared -o add.so add.go

這條命令指定了編譯模式為c-shared,編譯完成以后,當(dāng)前文件夾下面會生成一個add.so文件。這就是我們需要用 Python 載入的文件了。

注意: 不同平臺下編譯的add.so 不能通用,Windows下可以運(yùn)行的so文件,linux下就不能運(yùn)行,需要重新編譯linux的so文件

python 中調(diào)用go模塊’

# -*- coding:utf-8 -*-
# @Time    : 2020/9/29
# @Author  : hllyzms
import ctypes

lib = ctypes.cdll.LoadLibrary('./add.so')

result = lib.Add(2020, 1)
print(result)

add = lib.Addstr  #調(diào)用go模塊
# 顯式聲明參數(shù)和返回的期望類型
add.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
add.restype = ctypes.c_char_p
str1 = add("abc".encode("utf-8"),'efg'.encode("utf-8"))
print(str1,type(str1))

結(jié)果:

2021
b'abcefg' <class 'bytes'>

注意 Addstr 傳入測參數(shù)要轉(zhuǎn)換成byte類型

go中的*C.char 對應(yīng) ctypes 中的c_char_p 對應(yīng)Python中的bytes object or None

Python與Go之間的參數(shù)傳遞, 處理非INT型時需要都轉(zhuǎn)為對應(yīng)的C類型

ctypes需要顯式地聲明DLL函數(shù)的參數(shù)和返回期望的數(shù)據(jù)類型

注意在Python3中字符串bytes和string的區(qū)別

Go模塊需要//export 聲明外部可調(diào)用

Go處理C的類型是需要顯式轉(zhuǎn)換

以上就是Python調(diào)用golang代碼詳解的詳細(xì)內(nèi)容,更多關(guān)于Python調(diào)用golang的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python將pandas datarame保存為txt文件的實例

    python將pandas datarame保存為txt文件的實例

    今天小編就為大家分享一篇python將pandas datarame保存為txt文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python實現(xiàn)電視里的5毛特效實例代碼詳解

    Python實現(xiàn)電視里的5毛特效實例代碼詳解

    這篇文章主要介紹了Python實現(xiàn)了電視里的5毛特效,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python使用matplotlib繪制正弦和余弦曲線的方法示例

    Python使用matplotlib繪制正弦和余弦曲線的方法示例

    這篇文章主要介紹了Python使用matplotlib繪制正弦和余弦曲線的方法,結(jié)合實例形式分析了Python調(diào)用matplotlib庫進(jìn)行圖形繪制想具體操作技巧,需要的朋友可以參考下
    2018-01-01
  • 使用pytorch進(jìn)行圖像的順序讀取方法

    使用pytorch進(jìn)行圖像的順序讀取方法

    今天小編就為大家分享一篇使用pytorch進(jìn)行圖像的順序讀取方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • pytorch中.to(device) 和.cuda()的區(qū)別說明

    pytorch中.to(device) 和.cuda()的區(qū)別說明

    這篇文章主要介紹了pytorch中.to(device) 和.cuda()的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 基于Python實現(xiàn)一個PDF特殊字體提取工具

    基于Python實現(xiàn)一個PDF特殊字體提取工具

    在PDF文檔處理場景中,我們常常需要針對特定格式的文本內(nèi)容進(jìn)行提取分析,本文介紹的"PDF特殊字體提取器"是一款基于Python開發(fā)的桌面應(yīng)用程序感興趣的小伙伴跟著小編一起來看看吧
    2025-03-03
  • Python保存數(shù)據(jù)到文件的實現(xiàn)方式

    Python保存數(shù)據(jù)到文件的實現(xiàn)方式

    這篇文章主要介紹了Python保存數(shù)據(jù)到文件的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 超詳細(xì)圖解修改pip?install默認(rèn)安裝路徑的方法

    超詳細(xì)圖解修改pip?install默認(rèn)安裝路徑的方法

    windows環(huán)境下Python pip安裝庫的時候,默認(rèn)安裝在c盤,下面這篇文章主要給大家介紹了關(guān)于修改pip?install默認(rèn)安裝路徑的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • tensorboard顯示空白的解決

    tensorboard顯示空白的解決

    今天小編就為大家分享一篇tensorboard顯示空白的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python PyCharm如何進(jìn)行斷點(diǎn)調(diào)試

    Python PyCharm如何進(jìn)行斷點(diǎn)調(diào)試

    這篇文章主要介紹了Python PyCharm如何進(jìn)行斷點(diǎn)調(diào)試,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評論

随州市| 沛县| 金溪县| 上杭县| 合江县| 玉溪市| 桂林市| 巴青县| 左贡县| 鱼台县| 天全县| 定结县| 广南县| 高雄市| 出国| 陕西省| 孟州市| 桑植县| 凭祥市| 灵山县| 泸水县| 彭州市| 夏河县| 闸北区| 昭觉县| 秦皇岛市| 曲靖市| 大庆市| 枝江市| 泸西县| 沧州市| 旌德县| 武胜县| 酒泉市| 根河市| 登封市| 金川县| 越西县| 玉门市| 天津市| 镇沅|