通往死亡之路的python筆記之與C語言混編的幾種方式

Python這些年風頭一直很盛跷究,占據(jù)了很多領(lǐng)域的位置,Web敲霍、大數(shù)據(jù)俊马、人工智能、運維均有它的身影肩杈,甚至圖形界面做的也很順柴我,乃至full-stack這個詞語剛出來的時候,似乎就是為了描述它扩然。

Python雖有GIL的問題導(dǎo)致多線程無法充分利用多核艘儒,但后來的multiprocess可以從多進程的角度來利用多核,甚至affinity可以綁定具體的CPU核与学,這個問題也算得到解決彤悔。雖基本為全棧語言,但有的時候為了效率索守,可能還是會去考慮和C語言混編晕窑。混編是計算機里一個不可回避的話題卵佛,涉及的東西很多杨赤,技術(shù)敞斋、架構(gòu)、團隊情況疾牲、管理植捎、客戶等各個環(huán)節(jié)可能對其都有影響,混編這個問題我想到時候再開一貼專門討論阳柔。本文只講python和C混編的方式焰枢,大致有如下幾種方式(本文背景是linux,其他平臺可以類比):

共享庫

使用C語言編譯產(chǎn)生共享庫舌剂,然后python使用ctype庫里的cdll來打開共享庫济锄。

舉例如下,C語言代碼為

/* func.c */

intfunc(inta)

{returna*a;

}

python代碼為

#!/usr/bin/env python

#test_so.py

from ctypes import cdll

import os

p = os.getcwd() + '/libfunc.so'

f = cdll.LoadLibrary(p)

print f.func(99)

測試如下

$ gcc -fPIC -shared func.c -o libfunc.so

$ ./test_so.py

9801

subprocess

C語言設(shè)計一個完整的可執(zhí)行文件霍转,然后python通過subprocess來執(zhí)行該可執(zhí)行文件荐绝,本質(zhì)上是fork+execve。

舉例如下避消,C語言代碼為

/* test.c */#includeint func(int a)

{

return a*a;

}

int main(int argc, char **argv)

{

int x;

sscanf(argv[1], "%d", &x);

printf("%d\n", func(x));

return 0;

}

Python代碼為

#!/usr/bin/env python#test_subprocess.pyimportosimportsubprocess

subprocess.call([os.getcwd()+'/a.out','99'])

測試如下
$ gcc test.c -o a.out

$ ./test_subprocess.py

9801

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末低滩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子岩喷,更是在濱河造成了極大的恐慌恕沫,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件均驶,死亡現(xiàn)場離奇詭異昏兆,居然都是意外死亡枫虏,警方通過查閱死者的電腦和手機妇穴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隶债,“玉大人腾它,你說我怎么就攤上這事∷蓝铮” “怎么了瞒滴?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赞警。 經(jīng)常有香客問我妓忍,道長,這世上最難降的妖魔是什么愧旦? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任世剖,我火速辦了婚禮,結(jié)果婚禮上笤虫,老公的妹妹穿的比我還像新娘旁瘫。我一直安慰自己祖凫,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布酬凳。 她就那樣靜靜地躺著惠况,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宁仔。 梳的紋絲不亂的頭發(fā)上稠屠,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音翎苫,去河邊找鬼完箩。 笑死,一個胖子當著我的面吹牛拉队,可吹牛的內(nèi)容都是我干的弊知。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼粱快,長吁一口氣:“原來是場噩夢啊……” “哼秩彤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起事哭,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤漫雷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鳍咱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體降盹,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年谤辜,在試婚紗的時候發(fā)現(xiàn)自己被綠了蓄坏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡丑念,死狀恐怖涡戳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脯倚,我是刑警寧澤渔彰,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站推正,受9級特大地震影響恍涂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜植榕,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一再沧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧内贮,春花似錦产园、人聲如沸汞斧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粘勒。三九已至,卻和暖如春屎即,著一層夾襖步出監(jiān)牢的瞬間庙睡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工技俐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乘陪,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓雕擂,卻偏偏與公主長得像啡邑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子井赌,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容