當前位置:首頁 » 編程語言 » 互信息python實現

互信息python實現

發布時間: 2023-01-16 18:59:46

1. 計算機python的實現方式都有哪些

  1. 雖然官方 Python 實現差不多得到最廣泛的歡迎,但也有一些其他實現對特定領域的用戶來說更具吸引力。
    知名的實現包括:
    CPython
    這是最早出現並持續維護的 Python 實現,以 C 語言編寫。新的語言特性通常在此率先添加。
    Jython
    以 Java 語言編寫的 Python 實現。此實現可以作為 Java 應用的一個腳本語言,或者可以用來創建需要 Java 類庫支持的應用。想了解更多信息可訪問 Jython 網站。
    Python for .NET
    此實現實際上使用了 CPython 實現,但是屬於 .NET 託管應用並且可以引入 .NET 類庫。它的創造者是 Brian Lloyd。想了解詳情可訪問 Python for .NET 主頁。
    IronPython
    另一個 .NET 的 Python 實現,與 Python.NET 不同點在於它是生成 IL 的完全 Python 實現,並且將 Python 代碼直接編譯為 .NET 程序集。它的創造者就是當初創造 Jython 的 Jim Hugunin。想了解詳情可訪問 IronPython 網站。
    PyPy
    完全使用 Python 語言編寫的 Python 實現。它支持多個其他實現所沒有的高級特性,例如非棧式支持和 JIT 編譯器等。此項目的目標之一是通過允許方便地修改解釋器 (因為它是用 Python 編寫的),鼓勵該對語言本身進行試驗。想了解詳情可訪問 PyPy 項目主頁。
    以上這些實現都可能在某些方面與此參考文檔手冊的描述有所差異,或是引入了超出標准 Python 文檔范圍的特定信息。請參考它們各自的專門文檔,以確定你正在使用的這個實現有哪些你需要了解的東西。

  2. 以 Java 語言編寫的 Python 實現。此實現可以作為 Java 應用的一個腳本語言,或者可以用來創建需要 Java 類庫支持的應用。想了解更多信息可訪問 Jython 網站。
    Python for .NET
    此實現實際上使用了 CPython 實現,但是屬於 .NET 託管應用並且可以引入 .NET 類庫。它的創造者是 Brian Lloyd。想了解詳情可訪問 Python for .NET 主頁。
    IronPython
    另一個 .NET 的 Python 實現,與 Python.NET 不同點在於它是生成 IL 的完全 Python 實現,並且將 Python 代碼直接編譯為 .NET 程序集。它的創造者就是當初創造 Jython 的 Jim Hugunin。想了解詳情可訪問 IronPython 網站。

2. 如何實現python和telnet通信

1#-*-coding:utf-8-*-
2
3importtelnetlib
4
5'''Telnet遠程登錄:Windows客戶端連接linux伺服器'''
6
7#配置選項
8Host='192.168.1.2'#Telnet伺服器IP
9username='admin'#登錄用戶名
10password='123456'#登錄密碼
11finish=':~$'#命令提示符(標識著上一條命令已執行完畢)
12
13#連接Telnet伺服器
14tn=telnetlib.Telnet(Host)
15
16#輸入登錄用戶名
17tn.read_until('login:')
18tn.write(username+' ')
19
20#輸入登錄密碼
21tn.read_until('Password:')
22tn.write(password+' ')
23
24#登錄完畢後,執行ls命令
25tn.read_until(finish)
26tn.write('ls ')
27
28#ls命令執行完畢後,終止Telnet連接(或輸入exit退出)
29tn.read_until(finish)
30tn.close()#tn.write('exit ')


如果解決了您的問題請採納!
如果未解決請繼續追問!

3. 如何用 Python 中的 NLTK 對中文進行分析和處理

最近正在用nltk 對中文網路商品評論進行褒貶情感分類,計算評論的信息熵(entropy)、互信息(point mutual information)和困惑值(perplexity)等(不過這些概念我其實也還理解不深...只是nltk 提供了相應方法)。
我感覺用nltk 處理中文是完全可用的。其重點在於中文分詞和文本表達的形式。
中文和英文主要的不同之處是中文需要分詞。因為nltk 的處理粒度一般是詞,所以必須要先對文本進行分詞然後再用nltk 來處理(不需要用nltk 來做分詞,直接用分詞包就可以了。嚴重推薦結巴分詞,非常好用)。
中文分詞之後,文本就是一個由每個片語成的長數組:[word1, word2, word3…… wordn]。之後就可以使用nltk 裡面的各種方法來處理這個文本了。比如用FreqDist 統計文本詞頻,用bigrams 把文本變成雙片語的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]。
再之後就可以用這些來計算文本詞語的信息熵、互信息等。
再之後可以用這些來選擇機器學習的特徵,構建分類器,對文本進行分類(商品評論是由多個獨立評論組成的多維數組,網上有很多情感分類的實現例子用的就是nltk 中的商品評論語料庫,不過是英文的。但整個思想是可以一致的)。
另外還有一個困擾很多人的Python 中文編碼問題。多次失敗後我總結出一些經驗。
Python 解決中文編碼問題基本可以用以下邏輯:
utf8(輸入) ——> unicode(處理) ——> (輸出)utf8
Python 裡面處理的字元都是都是unicode 編碼,因此解決編碼問題的方法是把輸入的文本(無論是什麼編碼)解碼為(decode)unicode編碼,然後輸出時再編碼(encode)成所需編碼。
由於處理的一般為txt 文檔,所以最簡單的方法,是把txt 文檔另存為utf-8 編碼,然後使用Python 處理的時候解碼為unicode(sometexts.decode('utf8')),輸出結果回txt 的時候再編碼成utf8(直接用str() 函數就可以了)。

4. Python RPyC如何實現客戶端與服務端通信

rpyc是我用過的最容易,也最強大的遠程進程通訊了。當然如果你自己編寫框架,可以比它更強大也可能。


你搜索一下官網或者是任意一個教程都可以找到一個解決方案,然後你變化一下就可以解決你的問題。


因為不太理解你的問題,所以先解釋一下,rpyc實現的是將客戶端代碼,復制到服務端,並在服務端執行後將結果包裝後返回服務端。當然如果服務端已經有這個代碼了,就可以直接執行,然後結果返回。


所以原則上講,不可能在客戶端沒有連接服務端的情形下,從服務端返回消息的。 所以你試驗的應該是連接到服務端,然後獲得響應。這個是可以的。


如果你想發消息到服務端直接通過函數的參數就可以啦。

importrpyc
c=rpyc.connect('localhost',服務端埠)
printc.root.服務端exposed的函數(你要傳遞的參數放在這里)
c.close()

5. 如何實現 C/C++ 與 Python 的通信

Python指它的標准實現,即CPython(雖然不是很嚴格)

本文分4個部分

C/C++ 調用 Python (基礎篇)— 僅討論Python官方提供的實現方式

Python 調用 C/C++ (基礎篇)— 僅討論Python官方提供的實現方式

C/C++ 調用 Python (高級篇)— 使用 Cython

Python 調用 C/C++ (高級篇)— 使用 SWIG

練習本文中的例子,需要搭建Python擴展開發環境。具體細節見搭建Python擴展開發環境 - 蛇之魅惑 - 知乎專欄

1 C/C++ 調用 Python(基礎篇)
Python 本身就是一個C庫。你所看到的可執行體python只不過是個stub。真正的python實體在動態鏈接庫里實現,在Windows平台上,這個文件位於 %SystemRoot%\System32\python27.dll。

你也可以在自己的程序中調用Python,看起來非常容易:

//my_python.c
#include <Python.h>

int main(int argc, char *argv[])
{
Py_SetProgramName(argv[0]);
Py_Initialize();
PyRun_SimpleString("print 'Hello Python!'\n");
Py_Finalize();
return 0;
}

在Windows平台下,打開Visual Studio命令提示符,編譯命令為

cl my_python.c -IC:\Python27\include C:\Python27\libs\python27.lib

在Linux下編譯命令為

gcc my_python.c -o my_python -I/usr/include/python2.7/ -lpython2.7

在Mac OS X 下的編譯命令同上

產生可執行文件後,直接運行,結果為輸出

Hello Python!

Python庫函數PyRun_SimpleString可以執行字元串形式的Python代碼。

雖然非常簡單,但這段代碼除了能用C語言動態生成一些Python代碼之外,並沒有什麼用處。我們需要的是C語言的數據結構能夠和Python交互。

下面舉個例子,比如說,有一天我們用Python寫了一個功能特別強大的函數:

def great_function(a):
return a + 1

接下來要把它包裝成C語言的函數。我們期待的C語言的對應函數應該是這樣的:

int great_function_from_python(int a) {
int res;
// some magic
return res;
}

首先,復用Python模塊得做『import』,這里也不例外。所以我們把great_function放到一個mole里,比如說,這個mole名字叫 great_mole.py

接下來就要用C來調用Python了,完整的代碼如下:

#include <Python.h>

int great_function_from_python(int a) {
int res;
PyObject *pMole,*pFunc;
PyObject *pArgs, *pValue;

/* import */
pMole = PyImport_Import(PyString_FromString("great_mole"));

/* great_mole.great_function */
pFunc = PyObject_GetAttrString(pMole, "great_function");

/* build args */
pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs,0, PyInt_FromLong(a));

/* call */
pValue = PyObject_CallObject(pFunc, pArgs);

res = PyInt_AsLong(pValue);
return res;
}

從上述代碼可以窺見Python內部運行的方式:

所有Python元素,mole、function、tuple、string等等,實際上都是PyObject。C語言里操縱它們,一律使用PyObject *。

Python的類型與C語言類型可以相互轉換。Python類型XXX轉換為C語言類型YYY要使用PyXXX_AsYYY函數;C類型YYY轉換為Python類型XXX要使用PyXXX_FromYYY函數。

也可以創建Python類型的變數,使用PyXXX_New可以創建類型為XXX的變數。

若a是Tuple,則a[i] = b對應於 PyTuple_SetItem(a,i,b),有理由相信還有一個函數PyTuple_GetItem完成取得某一項的值。

不僅Python語言很優雅,Python的庫函數API也非常優雅。

現在我們得到了一個C語言的函數了,可以寫一個main測試它

#include <Python.h>

int great_function_from_python(int a);

int main(int argc, char *argv[]) {
Py_Initialize();
printf("%d",great_function_from_python(2));
Py_Finalize();
}

編譯的方式就用本節開頭使用的方法。

在Linux/Mac OSX運行此示例之前,可能先需要設置環境變數:

bash:

export PYTHONPATH=.:$PYTHONPATH

csh:

setenv PYTHONPATH .:$PYTHONPATH

2 Python 調用 C/C++(基礎篇)
這種做法稱為Python擴展。
比如說,我們有一個功能強大的C函數:

int great_function(int a) {
return a + 1;
}

期望在Python里這樣使用:

>>> from great_mole import great_function
>>> great_function(2)
3

考慮最簡單的情況。我們把功能強大的函數放入C文件 great_mole.c 中。

#include <Python.h>

int great_function(int a) {
return a + 1;
}

static PyObject * _great_function(PyObject *self, PyObject *args)
{
int _a;
int res;

if (!PyArg_ParseTuple(args, "i", &_a))
return NULL;
res = great_function(_a);
return PyLong_FromLong(res);
}

static PyMethodDef GreateMoleMethods[] = {
{
"great_function",
_great_function,
METH_VARARGS,
""
},
{NULL, NULL, 0, NULL}
};

PyMODINIT_FUNC initgreat_mole(void) {
(void) Py_InitMole("great_mole", GreateMoleMethods);
}

除了功能強大的函數great_function外,這個文件中還有以下部分:

包裹函數_great_function。它負責將Python的參數轉化為C的參數(PyArg_ParseTuple),調用實際的great_function,並處理great_function的返回值,最終返回給Python環境。

導出表GreateMoleMethods。它負責告訴Python這個模塊里有哪些函數可以被Python調用。導出表的名字可以隨便起,每一項有4個參數:第一個參數是提供給Python環境的函數名稱,第二個參數是_great_function,即包裹函數。第三個參數的含義是參數變長,第四個參數是一個說明性的字元串。導出表總是以{NULL, NULL, 0, NULL}結束。

導出函數initgreat_mole。這個的名字不是任取的,是你的mole名稱添加前綴init。導出函數中將模塊名稱與導出表進行連接。

6. plc與python之間實現通信

python語言與plc建立串口通信時,無法直接讀寫。
用到python的serial 模塊

在創建串口對象時需要定義其屬性與plc一致:

self.main_engine.baudrate = self.bps
self.main_engine.bytesize = 7
self.main_engine.parity = 'E'
self.main_engine.stopbits = 2

重點:在寫入數據後,需要寫16進制數"0D",結束標志位

self.main_engine.write("@00WD1010000152*".encode())
self.main_engine.write(binascii.a2b_hex("0D"))

7. python如何實現兩個nat映射的ip相互信任

如果A和B兩個部分都初始化了TCP連接,NAT設備就會認為它們之間是相互信任的,也... 2.在一個區域網中做一個IP映射,映射一個公網IP,另外一個區域網訪問這個IP就是公網... 客戶端:a,b 伺服器端(公網)c a發送消息給c,同時c拿到a的ip埠等信息。

8. 如何實現MT4與Python之間的交互

通過csv或txt的形式進行交互,包括傳遞參數,傳遞外匯價格信息,傳遞做單指令,等等

9. Python如何實現定時發送qq消息

因為生活中老是忘記各種事情,剛好又在學python,便突發奇想通過python實現提醒任務的功能(盡管TIM有定時功能),也可定時給好友、群、討論組發送qq消息。其工作流程是:訪問資料庫提取最近計劃——>根據數據內容(提醒時間、提醒對象、提醒內容)設置定時任務——>給特定qq好友發送消息。
1.軟體版本:
2.安裝依賴環境
pymysql安裝:pip install pymysql
qqbot安裝:pip install qqbot

3.資料庫操作
資料庫操作非常簡單,跟Java類似,自己去菜鳥教程看一下基礎語法就好了。
4.配置qqbot登陸信息
也可以不配置,不配置的話就是每次掃碼登陸,但這在Linux系統下不好用,我按說明將配置改成了每次將登陸二維碼發到固定qq郵箱。qqbot模塊在GitHub上,大家可以去看一下模塊說明:qqbot
配置文件默認在用戶目錄下的.qqbot-tmp/v2.3.conf,linux下類似
相關推薦:《Python視頻教程》
5. 自定義功能

6.入口主程序
7.其它
資料庫結構:
dropdatabaseif exists info_db;
createdatabaseinfo_db defaultcharactersetutf8;
use info_db;
createtabletyschele_tb(
id int(11) auto_increment primarykey,
worktime timestampnotnull,
namevarchar(10) notnull,
content varchar(100) notnull
)engine=InnoDB auto_increment=1 defaultcharset=utf8;
以上就是循環發送qq消息的代碼,以下是項目目錄結構,其中一些沒有出現的文件是自己測試所用,可以不用關心:
效果圖:

熱點內容
如何訪問電腦工作組 發布:2025-07-16 09:39:24 瀏覽:182
動態優先權演算法 發布:2025-07-16 09:39:02 瀏覽:201
火車wifi密碼是多少啊 發布:2025-07-16 09:35:46 瀏覽:755
sql的視圖是從中導出的 發布:2025-07-16 09:31:34 瀏覽:783
安卓如何打開shell窗口 發布:2025-07-16 09:28:09 瀏覽:311
華為榮耀備忘錄文件夾 發布:2025-07-16 09:23:23 瀏覽:972
基於特徵匹配演算法 發布:2025-07-16 09:18:23 瀏覽:46
夢香神奇寶貝伺服器的ip 發布:2025-07-16 09:14:07 瀏覽:212
電子密碼手套箱是什麼 發布:2025-07-16 09:13:27 瀏覽:799
手機連接資料庫 發布:2025-07-16 09:13:23 瀏覽:132