導航:首頁 > 編程語言 > pythongetlasterror

pythongetlasterror

發布時間:2023-05-23 09:24:37

1. python 有沒有和 C/C++ 進程共享內存的方式

通過share memory 取態悔對象的例子, c write object into memory map, python read it by call dll api.

So there still questions you should consider how to guarantee the process share security. Good luck..
----python part----

from ctypes import *
#windll.kernel32.SetLastError(-100)
print windll.kernel32.GetLastError()
getMessage=windll.kernel32.OpenFileMappingA
getMessage.restype = c_int
handle=getMessage(1,False,"Global\\MyFileMappingObject")
if handle ==0:
print 'open file mapping handle is Null'

else:
mapView=windll.kernel32.MapViewOfFile
mapView.restype = c_char_p
print mapView(handle,1,0,0,256)

----c part----
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>

#define BUF_SIZE 256
TCHAR szName[] = TEXT("Global\\MyFileMappingObject");
TCHAR szMsg[] = TEXT("Message from first process.");

int _tmain()
{
HANDLE hMapFile;
LPCTSTR pBuf;

hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
BUF_SIZE, // maximum object size (low-order DWORD)
szName); // name of mapping object

if (hMapFile == NULL)
{
_tprintf(TEXT("Could not create file mapping object (%d).\敬閉悉n"),
GetLastError());
return 1;
}
pBuf = (LPTSTR)MapViewOfFile(hMapFile, // handle to map object
FILE_MAP_ALL_ACCESS, /亮乎/ read/write permission
0,
0,
BUF_SIZE);

if (pBuf == NULL)
{
_tprintf(TEXT("Could not map view of file (%d).\n"),
GetLastError());

CloseHandle(hMapFile);

return 1;
}

CopyMemory((PVOID)pBuf, szMsg, (_tcslen(szMsg) * sizeof(TCHAR)));
_getch();

UnmapViewOfFile(pBuf);

CloseHandle(hMapFile);

return 0;
}

2. 怎樣用python調用vc++編出來的win32 DLL

python調用vc中的API
准備工作: 安裝pywin32-210.5.win32-py2.5.exe

例1:最簡單的MessageBox函數
import win32api, win32gui
import win32con, winerror,win32event,pywintypes
import sys, os,time
win32api.MessageBox(0,'hello', 'WYM',win32con.MB_OK)

例2:進程監控
#Mutex.py
mutex=None
mutex=win32event.CreateMutex(None,pywintypes.FALSE,"MutexWym")
if(win32api.GetLastError() == winerror.ERROR_ALREADY_EXISTS):
print"Opened existing mutex object", mutex
else:
print "Created new mutex"
time.sleep(10)
win32api.CloseHandle(mutex)
print "close Mutex"
time.sleep(10)

#MonitorProcess.py

import win32api, win32gui
import win32con, winerror,win32event ,pywintypes
import sys, os,time
STANDARD_RIGHTS_REQUIRED = 0x000F0000L
SYNCHRONIZE = 0x00100000L
MUTANT_QUERY_STATE = 0x0001
MUTEX_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE
try:
while 1:
time.sleep(2)
hMutex=win32event.OpenMutex(MUTEX_ALL_ACCESS,pywintypes.FALSE,"MutexWym")
print win32api.GetLastError()
if hMutex is not None:
print "Mutex open"
win32api.CloseHandle(hMutex)
else:
print "Mutex not open"
break
except pywintypes.error, (errno, object, strerror):
print "Error in", object, ":", strerror

如何使用kernel32的API呢
例3:
import pywintypes
import winerror, win32con
import win32api, win32event, win32file, win32pipe, win32process, win32security
import win32service, win32serviceutil, servicemanager,ntsecuritycon
from ctypes import * #本例包括這個頭文件

hMutex = windll.kernel32.CreateMutexA(None, 0, "szMutex")
#其它API同理,比如像windll.kernel32.InitializeCriticalSection() 等等

a、python中涉及的windows下的類型?
通過pywintypes 可以獲得這個數據類型
b、獲得窗口句柄
通過FindWindow這API來查找相應的窗口的句柄,然後發消息給這個窗口,就可以實現這個功能
ct = win32api.GetConsoleTitle()
hd = win32gui.FindWindow(0,ct)
win32gui.ShowWindow(hd,0)


3. INI的文件讀寫

讀取 (_In_LPCTSTRlpAppName,_In_LPCTSTRlpKeyName,_In_LPCTSTRlpDefault,_Out_LPTSTRlpReturnedString,_In_DWORDnSize,_In_LPCTSTRlpFileName);參數說明:
lpAppName (輸入參數)節名
lpKeyName (輸入參數)鍵名
lpDefault (輸入參數)默認值。INI讀取失敗時,得到這個值
lpReturnedString (輸出參數)讀取到的鍵值
nSize (輸入參數)lpReturnedString的緩沖區大小
lpFileName (輸入參數)INI文件的文件路徑
返回值:
讀取到的字元數,不包括末尾的''字元或L''字元。
寫入 (_In_LPCTSTRlpAppName,_In_LPCTSTRlpKeyName,_In_LPCTSTRlpString,_In_LPCTSTRlpFileName);參數說明:
lpAppName (輸入參數)節名
lpKeyName (輸入參數)鍵名
lpString (輸入參數)需要寫入的鍵值
lpFileName (輸入參數)INI文件的文件路徑
返回值:
寫入成功返回非零值,寫入失敗返回零值,可以用GetLastError函數得到錯誤原因。 #!/usr/bin/envpython#-*-coding:UTF-8-*-importConfigParseriniparser=ConfigParser.ConfigParser()#初始化一個INI讀寫類的對象iniparser.read('filename.ini')#讀取INI文件key_value=iniparser.get('section_name_1','key_name')#解析INI文件printkey_value#生成INI文件iniparser.add_section('section_name_2')iniparser.set('section_name_2','key_name','key_value')withopen('filename.ini','w')asinifile: iniparser.write(inifile)#寫入INI文件

4. python新手遇到的問題

classPROCESS_INFORMATION(Structure):
_FIELDS_=[
("hProcess",HANDLE),
("hThread",HANDLE),
("dwProcessId",DWORD),
("dwThreadId",DWORD),
孫清碧凱汪悔仔]

上面的這段代碼有一個地方被大寫了,_FIELDS_應該為小寫_fields_。

5. python,kernel32未定義問題,版本2.5

if kernel32.CreateProcessA(path_to_exe,
None,
creation_flags,
None,
None,
byref(startupinfo),
byref(process_information)):
這里少扮談老廳升了幾個參數,侍尺漏了幾個None:
if kernel32.CreateProcessA(path_to_exe,
None,
None,
None,
None,
creation_flags,
None,
None,
byref(startupinfo),
byref(process_information)):

6. 你在編程中寫過最多的代碼是什麼

對我而言,寫的最多的代碼應該是注釋吧,也就是Java代碼中的「//」。當然,這個東東和個人習慣和工作崗位有關,我之前做基礎架構方面的代碼編寫,領導對代碼質量要求較高,sonar跑出的代碼注釋率需要達到40%及以上,標准幾乎是一行代碼一個注釋,這種代碼習慣對不同的團隊有不同的理解。

7. 常用的API有哪些

WINDOWS編程常用API函數
1. API之網路函數
WNetAddConnection 創建同一個網路資源的永久性連接
WNetAddConnection2 創建同一個網路資源的連接
WNetAddConnection3 創建同一個網路資源的連接
WNetCancelConnection 結束一個網路連接
WNetCancelConnection2 結束一個網路連接
WNetCloseEnum 結束一次枚舉操作
WNetConnectionDialog 啟動一個標准對話框,以便建立同網路資源的連接
WNetDisconnectDialog 啟動一個標准對話框,以便斷開同網路資源的連接
WNetEnumResource 枚舉網路資源
WNetGetConnection 獲取本地或已連接的一個資源的網路名稱
WNetGetLastError 獲取網路錯誤的擴展錯誤信息
WNetGetUniversalName 獲取網路中一個文件的遠程名稱以及/或者UNC(統一命名規范)名稱
WNetGetUser 獲取一個網路資源用以連接的名字
WNetOpenEnum 啟動對網路資源進行枚舉的過程
2. API之消息函數
BroadcastSystemMessage 將一條系統消息廣播給系統中所有的頂級窗口
GetMessagePos 取得消息隊列中上一條消息處理完畢時的滑鼠指針屏幕位置
GetMessageTime 取得消息隊列中上一條消息處理完畢時的時間
PostMessage 將一條消息投遞到指定窗口的消息隊列
PostThreadMessage 將一條消息投遞給應用程序
RegisterWindowMessage 獲取分配給一個字串標識符的消息編號
ReplyMessage 答復一個消息
SendMessage 調用一個窗口的窗口函數,將一條消息發給那個窗口
SendMessageCallback 將一條消息發給窗口
SendMessageTimeout 向窗口發送一條消息
SendNotifyMessage 向窗口發送一條消息
3. API之文件處理函數
CloseHandle 關閉一個內核對象。其中包括文件、文件映射、進程、線程、安全和同步對象等
CompareFileTime 對比兩個文件的時間
CopyFile 復制文件
CreateDirectory 創建一個新目錄
CreateFile 打開和創建文件、管道、郵槽、通信服務、設備以及控制台
CreateFileMapping 創建一個新的文件映射對象
DeleteFile 刪除指定文件
DeviceIoControl 對設備執行指定的操作
DosDateTimeToFileTime 將DOS日期和時間值轉換成一個 win32 FILETIME 值
FileTimeToDosDateTime 將一個 win32 FILETIME 值轉換成DOS日期和時間值
FileTimeToLocalFileTime 將一個FILETIME結構轉換成本地時間
FileTimeToSystemTime 根據一個FILETIME結構的內容,裝載一個SYSTEMTIME結構
FindClose 關閉由FindFirstFile函數創建的一個搜索句柄
FindFirstFile 根據文件名查找文件
FindNextFile 根據調用FindFirstFile函數時指定的一個文件名查找下一個文件
FlushFileBuffers 針對指定的文件句柄,刷新內部文件緩沖區
FlushViewOfFile 將寫入文件映射緩沖區的所有數據都刷新到磁碟
GetBinaryType 判斷文件是否可以執行
GetCompressedFileSize 判斷一個壓縮文件在磁碟上實際占據的位元組數
GetCurrentDirectory 在一個緩沖區中裝載當前目錄
GetDiskFreeSpace 獲取與一個磁碟的組織有關的信息,以及了解剩餘空間的容量
GetDiskFreeSpaceEx 獲取與一個磁碟的組織以及剩餘空間容量有關的信息
GetDriveType 判斷一個磁碟驅動器的類型
GetExpandedName 取得一個壓縮文件的全名
GetFileAttributes 判斷指定文件的屬性
GetFileInformationByHandle 這個函數提供了獲取文件信息的一種機制
GetFileSize 判斷文件長度
GetFileTime 取得指定文件的時間信息
GetFileType 在給出文件句柄的前提下,判斷文件類型
GetFileVersionInfo 從支持版本標記的一個模塊里獲取文件版本信息
GetFileVersionInfoSize 針對包含了版本資源的一個文件,判斷容納文件版本信息需要一個多大的緩沖區
GetFullPathName 獲取指定文件的完整路徑名
GetLogicalDrives 判斷系統中存在哪些邏輯驅動器字母
GetLogicalDriveStrings 獲取一個字串,其中包含了當前所有邏輯驅動器的根驅動器路徑
GetOverlappedResult 判斷一個重疊操作當前的狀態
GetPrivateProfileInt 為初始化文件(.ini文件)中指定的條目獲取一個整數值
GetPrivateProfileSection 獲取指定小節(在.ini文件中)所有項名和值的一個列表
GetPrivateProfileString 為初始化文件中指定的條目取得字串
GetProfileInt 取得win.ini初始化文件中指定條目的一個整數值
GetProfileSection 獲取指定小節(在win.ini文件中)所有項名和值的一個列表
GetProfileString 為win.ini初始化文件中指定的條目取得字串
GetShortPathName 獲取指定文件的短路徑名
GetSystemDirectory 取得Windows系統目錄(即System目錄)的完整路徑名
GetTempFileName 這個函數包含了一個臨時文件的名字,它可由應用程序使用
GetTempPath 獲取為臨時文件指定的路徑
GetVolumeInformation 獲取與一個磁碟卷有關的信息
GetWindowsDirectory 獲取Windows目錄的完整路徑名
hread 參考lread
hwrite 參考lwrite函數
lclose 關閉指定的文件
lcreat 創建一個文件
llseek 設置文件中進行讀寫的當前位置
LockFile 鎖定文件的某一部分,使其不與其他應用程序共享
LockFileEx 與LockFile相似,只是它提供了更多的功能
lopen 以二進制模式打開指定的文件
lread 將文件中的數據讀入內存緩沖區
lwrite 將數據從內存緩沖區寫入一個文件
LZClose 關閉由LZOpenFile 或 LZInit函數打開的一個文件
LZCopy 復制一個文件
LZInit 這個函數用於初始化內部緩沖區
LZOpenFile 該函數能執行大量不同的文件處理,而且兼容於壓縮文件
LZRead 將數據從文件讀入內存緩沖區
LZSeek 設置一個文件中進行讀寫的當前位置
MapViewOfFile 將一個文件映射對象映射到當前應用程序的地址空間
MoveFile 移動文件
OpenFile 這個函數能執行大量不同的文件操作
OpenFileMapping 打開一個現成的文件映射對象
QueryDosDevice 在Windows NT中,DOS設備名會映射成NT系統設備名。該函數可判斷當前的設備映射情況
ReadFile 從文件中讀出數據
ReadFileEx 與ReadFile相似,只是它只能用於非同步讀操作,並包含了一個完整的回調
RegCloseKey 關閉系統注冊表中的一個項(或鍵)
RegConnectRegistry 訪問遠程系統的部分注冊表
RegCreateKey 在指定的項下創建或打開一個項
RegCreateKeyEx 在指定項下創建新項的更復雜的方式。在Win32環境中建議使用這個函數
RegDeleteKey 刪除現有項下方一個指定的子項
RegDeleteValue 刪除指定項下方的一個值
RegEnumKey 枚舉指定項的子項。在Win32環境中應使用RegEnumKeyEx
RegEnumKeyEx 枚舉指定項下方的子項
RegEnumValue 枚舉指定項的值
RegFlushKey 將對項和它的子項作出的改動實際寫入磁碟
RegGetKeySecurity 獲取與一個注冊表項有關的安全信息
RegLoadKey 從以前用RegSaveKey函數創建的一個文件里裝載注冊表信息
RegNotifyChangeKeyValue 注冊表項或它的任何一個子項發生變化時,用這個函數提供一種通知機制
RegOpenKey 打開一個現有的注冊表項
RegOpenKeyEx 打開一個現有的項。在win32下推薦使用這個函數
RegQueryInfoKey 獲取與一個項有關的信息
RegQueryValue 取得指定項或子項的默認(未命名)值
RegQueryValueEx 獲取一個項的設置值
RegReplaceKey 用一個磁碟文件保存的信息替換注冊表信息;並創建一個備份,在其中包含當前注冊表信息
RegRestoreKey 從一個磁碟文件恢復注冊表信息
RegSaveKey 將一個項以及它的所有子項都保存到一個磁碟文件
RegSetKeySecurity 設置指定項的安全特性
RegSetValue 設置指定項或子項的默認值
RegSetValueEx 設置指定項的值
RegUnLoadKey 卸載指定的項以及它的所有子項
RemoveDirectory 刪除指定目錄
SearchPath 查找指定文件
SetCurrentDirectory 設置當前目錄
SetEndOfFile 針對一個打開的文件,將當前文件位置設為文件末尾
SetFileAttributes 設置文件屬性
SetFilePointer 在一個文件中設置當前的讀寫位置
SetFileTime 設置文件的創建、訪問及上次修改時間
SetHandleCount 這個函數不必在win32下使用;即使使用,也不會有任何效果
SetVolumeLabel 設置一個磁碟的卷標(Label)
SystemTimeToFileTime 根據一個FILETIME結構的內容,載入一個SYSTEMTIME結構
UnlockFile 解除對一個文件的鎖定
UnlockFileEx 解除對一個文件的鎖定
UnmapViewOfFile 在當前應用程序的內存地址空間解除對一個文件映射對象的映射
VerFindFile 用這個函數決定一個文件應安裝到哪裡
VerInstallFile 用這個函數安裝一個文件
VerLanguageName 這個函數能根據16位語言代碼獲取一種語言的名稱
VerQueryValue 這個函數用於從版本資源中獲取信息
WriteFile 將數據寫入一個文件
WriteFileEx 與WriteFile類似,只是它只能用於非同步寫操作,並包括了一個完整的回調
WritePrivateProfileSection 為一個初始化文件(.ini)中指定的小節設置所有項名和值
WritePrivateProfileString 在初始化文件指定小節內設置一個字串
WriteProfileSection 為Win.ini初始化文件中一個指定的小節設置所有項名和值
WriteProfileString 在Win.ini初始化文件指定小節內設置一個字串
4. API之列印函數
AbortDoc 取消一份文檔的列印
AbortPrinter 刪除與一台列印機關聯在一起的緩沖文件
AddForm 為列印機的表單列表添加一個新表單
AddJob 用於獲取一個有效的路徑名,以便用它為作業創建一個後台列印文件。它也會為作業分配一個作業編號
AddMonitor 為系統添加一個列印機監視器
AddPort 啟動「添加埠」對話框,允許用戶在系統可用埠列表中加入一個新埠
AddPrinter 在系統中添加一台新列印機
AddPrinterConnection 連接指定的列印機
AddPrinterDriver 為指定的系統添加一個列印驅動程序
AddPrintProcessor 為指定的系統添加一個列印處理器
AddPrintProvidor 為系統添加一個列印供應商
AdvancedDocumentProperties 啟動列印機文檔設置對話框
ClosePrinter 關閉一個打開的列印機對象
ConfigurePort 針對指定的埠,啟動一個埠配置對話框
ConnectToPrinterDlg 啟動連接列印機對話框,用它同訪問網路的列印機連接
DeleteForm 從列印機可用表單列表中刪除一個表單
DeleteMonitor 刪除指定的列印監視器
DeletePort 啟動「刪除埠」對話框,允許用戶從當前系統刪除一個埠
DeletePrinter 將指定的列印機標志為從系統中刪除
DeletePrinterConnection 刪除與指定列印機的連接
DeletePrinterDriver 從系統刪除一個列印機驅動程序
DeletePrintProcessor 從指定系統刪除一個列印處理器
DeletePrintProvidor 從系統中刪除一個列印供應商
DeviceCapabilities 利用這個函數可獲得與一個設備的能力有關的信息
DocumentProperties 列印機配置控制函數
EndDocAPI 結束一個成功的列印作業
EndDocPrinter 在後台列印程序的級別指定一個文檔的結束
EndPage 用這個函數完成一個頁面的列印,並准備設備場景,以便列印下一個頁
EndPagePrinter 指定一個頁在列印作業中的結尾
EnumForms 枚舉一台列印機可用的表單
EnumJobs 枚舉列印隊列中的作業
EnumMonitors 枚舉可用的列印監視器
EnumPorts 枚舉一個系統可用的埠
EnumPrinterDrivers 枚舉指定系統中已安裝的列印機驅動程序
EnumPrinters 枚舉系統中安裝的列印機
EnumPrintProcessorDatatypes 枚舉由一個列印處理器支持的數據類型
EnumPrintProcessors 枚舉系統中可用的列印處理器
Escape 設備控制函數
關閉用函數獲取的一個列印機通告對象
創建一個新的改變通告對象,以便我們注意列印機狀態的各種變化
用這個函數判斷觸發一次列印機改變通告信號的原因
FreePrinterNotifyInfo 釋放由函數分配的一個緩沖區
GetForm 取得與指定表單有關的信息
GetJob 獲取與指定作業有關的信息
GetPrinter 取得與指定列印機有關的信息
GetPrinterData 為列印機設置注冊表配置信息
GetPrinterDriver 針對指定的列印機,獲取與列印機驅動程序有關的信息
GetPrinterDriverDirectory 判斷指定系統中包含了列印機驅動程序的目錄是什麼
GetPrintProcessorDirectory 判斷指定系統中包含了列印機處理器驅動程序及文件的目錄
OpenPrinter 打開指定的列印機,並獲取列印機的句柄
PrinterMessageBox 在擁有指定列印作業的系統上顯示一個列印機出錯消息框
PrinterProperties 啟動列印機屬性對話框,以便對列印機進行配置
ReadPrinter 從列印機讀入數據
ResetDC 重設一個設備場景
ResetPrinter 改變指定列印機的默認數據類型及文檔設置
ScheleJob 提交一個要列印的作業
SetAbortProc 為Windows指定取消函數的地址
SetForm 為指定的表單設置信息
SetJob 對一個列印作業的狀態進行控制
SetPrinter 對一台列印機的狀態進行控制
SetPrinterData 設置列印機的注冊表配置信息
StartDoc 開始一個列印作業
StartDocPrinter 在後台列印的級別啟動一個新文檔
StartPage 列印一個新頁前要先調用這個函數
StartPagePrinter 在列印作業中指定一個新頁的開始
WritePrinter 將發送目錄中的數據寫入列印機

8. 在python中調用user32.dll的SetWindowsHookExA,第二個參數用什麼數據類型

不太記得了。 剛才查了一下。第二個是一個回調函數。我以前似乎用c++實現過。不過首先是攔載程序的系統調用,將程序做某個系統調用時,會自動調用到我們自己人的DLL。這個叫dll注入。

注入後就開始在windows上載入鍵盤與滑鼠的hook。記著要調用next hook。

如果鍵兄要用python實現。 可能道理是一樣,如果你只是hook自己的程序沒有問題,如果要hook別的程序還是需要dll注入。

你搜索一下「在python中控制滑鼠」,這里有一段說明。或者是搜索「Windows hook with Python」
其中調用的callback函數是這樣子的
def LowLevelMouseProc( nCode, wParam, lParam ):

還有這褲春樣的
def KeyboardProc(nCode, wParam, lParam):

我附一份在這里好了。胡亮耐
def run():

global KeyBdHook
global messages

KeyBdHook = HHook()
messages = []

start = time.time()

#Record keystrokes for 2 seconds.
while time.time() < (start + 2):
KeyBdHook.hook = SetWindowsHookEx(13, KeyboardProc,
GetMoleHandle(0), 0)
if KeyBdHook.hook == 0:
print 'ERROR: '+str(ctypes.windll.kernel32.GetLastError())
UnhookWindowsHookEx(KeyBdHook.hook)

print messages

def KeyboardProc(nCode, wParam, lParam):
"""http://msdn.microsoft.com/en-us/library/ms644985(v=vs.85).aspx"""

if nCode < 0:
return ctypes.windll.user32.GetNextHookEx(KeyBdHook.hook,
nCode, wParam, lParam)
else:
ctypes.windll.kernel32.RtlMoveMemory(ctypes.addressof(KeyBdHook.kStruct),
ctypes.c_void_p(lParam),
ctypes.sizeof(lParam))

messages.append(KeyBdHook.kStruct)
return ctypes.windll.user32.GetNextHookEx(KeyBdHook.hook,
nCode, wParam, lParam)

def SetWindowsHookEx(idHook, lpFn, hMod, dwThreadId):
WinFunc = ctypes.WINFUNCTYPE(c_ulong, c_ulong, c_ulong, c_ulong)
return ctypes.windll.user32.SetWindowsHookExA(idHook, WinFunc(lpFn), hMod, dwThreadId)

def GetMoleHandle(lpMoleName):
return ctypes.windll.kernel32.GetMoleHandleA(lpMoleName)

def UnhookWindowsHookEx(hHook):
return ctypes.windll.user32.UnhookWindowsHookEx(hHook)

class HHook():
def __init__(self):
self.hook = HHOOK
self.kStruct = KBLLHOOKSTRUCT()

class KBLLHOOKSTRUCT(Structure):
"""http://msdn.microsoft.com/en-us/library/ms644967(v=vs.85).aspx"""

_fields_ = [("vkCode", c_ulong),
("scanCode", c_ulong),
("flags", c_ulong),
("time", c_ulong),
("dwExtraInfo", POINTER(c_ulong))]

9. python mongodb 怎麼執行 db.serverStatus 命令

> db.serverStatus();
{
"host" : "localhost.localdomain", --hostname
"version" : "2.4.9", --版本
"process" : "mongod", --進程名稱
"pid" : 5099, --進程ID
"uptime" : 1595, --啟動時間(單位:S)
"uptimeMillis" : NumberLong(1595123),
"uptimeEstimate" : 1577, --基於MongoDB內部粗粒度定時器的運行時間
"localTime" : ISODate("2014-04-17T06:55:44.924Z"),--server的本地時間
"asserts" : {
"regular" : 0, --server啟動以來拋出正規斷言(assert 類似於異常處理的形式)總數目
"warning" : 0, --server啟動以來拋出的告警總數目
"msg" : 0, --消息斷言數目。伺服器內部定義的良好字元串錯誤
"user" : 3, --用戶斷言數目。用戶產生的錯誤,譬如:磁碟空間滿;重復鍵。
"rollovers" : 0 --server啟動以來,assert counters have rolled over的次數
},
"backgroundFlushing" : {
"flushes" : 26, --資料庫刷新寫到磁碟的次數
"total_ms" : 67, --資料庫刷新數據到磁碟花費的微秒數
"average_ms" : 2.576923076923077,--執行單次刷新花費的平均微秒數
"last_ms" : 2, --最後一次執行完成刷新數據到磁碟花費的微秒數
"last_finished" : ISODate("2014-04-17T06:55:09.819Z")--當最後一次刷新數據完成時的時間戳
},
"connections" : {
"current" : 8, --當前活動連接量。連接到server的當前活躍連接數目
"available" : 72, --剩餘空閑連接量。剩餘的可用連接數目
"totalCreated" : NumberLong(754)
},
"cursors" : {
"totalOpen" : 0, --server為client保持的游標(cursor)總數
"clientCursors_size" : 0,
"timedOut" : 0 --server啟動以來游標(cursor)超時的總數
},
"r" : {
"commits" : 30, --上一間隔journal日誌發生commit的次數
"journaledMB" : 0, --上一間隔寫到journal日誌的數據量(單位:MB)
"writeToDataFilesMB" : 0, --上一間隔journal日誌寫到數據文件的數據量(單位:MB)
"compression" : 0, --
"commitsInWriteLock" : 0, --寫鎖期間發生commits的次數
"earlyCommits" : 0, --schele時間前請求commit的次數
"timeMs" : {
"dt" : 3064,
"prepLogBuffer" : 0, --准備寫journal日誌花費的時間
"writeToJournal" : 0, --寫journal日誌花費的實際時間
"writeToDataFiles" : 0, --journal日誌後寫數據文件花費的時間
"remapPrivateView" : 0 --The amount of time spent remapping -on-write memory mapped views
}
},
"extra_info" : {
"note" : "fields vary by platform",
"heap_usage_bytes" : 3838448, --此過程中所有的堆位元組數目。僅適用於Linux
"page_faults" : 31058356 --此過程中訪問內存中頁面失敗的總次數。僅適用於Linux
},
"globalLock" : {
"totalTime" : 1238418105923, --全局鎖創建的時間(單位:ms 微秒)
"lockTime" : 75055831911, --全局鎖保持的時間(單位:ms 微秒)
"ratio" : 0.06060621332329477, --lockTime和totalTime的比
"currentQueue" : {
"total" : 0, --等待全局鎖的隊列中操作數目
"readers" : 0, --等待讀鎖的隊列中操作數目
"writers" : 0 --等待寫鎖的隊列中操作數目
},
"activeClients" : {
"total" : 1, --連接到server的當前活動client數目
"readers" : 1, --執行讀操作的當前活動client數目
"writers" : 0 --執行寫操作的當前活動client數目
}
},
"indexCounters" : {
"accesses" : 196, --Btree索引的訪問次數(索引被訪問量)
"hits" : 196, --內存中的Btree頁的數目。(索引命中量)
"misses" : 0, --內存中不存在的Btree也數目。(索引偏差量)(索引內存訪問失敗次數)
"resets" : 0, --索引計數器被重置為0的次數
"missRatio" : 0 --索引偏差率(未命中率)
},
"locks" : {
"." : {
"timeLockedMicros" : {
"R" : NumberLong(39089),
"W" : NumberLong(43649)
},
"timeAcquiringMicros" : {
"R" : NumberLong(36077),
"W" : NumberLong(5232)
}
},
"admin" : {
"timeLockedMicros" : {
"r" : NumberLong(818),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(70),
"w" : NumberLong(0)
}
},
"local" : {
"timeLockedMicros" : {
"r" : NumberLong(3414),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(352),
"w" : NumberLong(0)
}
},
"WORKING_COLLECTION" : {
"timeLockedMicros" : {
"r" : NumberLong(1921),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(138),
"w" : NumberLong(0)
}
},
"mydb" : {
"timeLockedMicros" : {
"r" : NumberLong(737),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(92),
"w" : NumberLong(0)
}
},
"test" : {
"timeLockedMicros" : {
"r" : NumberLong(959),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(81),
"w" : NumberLong(0)
}
},
"mdsp" : {
"timeLockedMicros" : {
"r" : NumberLong(261031),
"w" : NumberLong(6093)
},
"timeAcquiringMicros" : {
"r" : NumberLong(4956),
"w" : NumberLong(206)
}
}
},
"network" : {
"bytesIn" : NumberLong("1929833164782"), --發送到資料庫的數據總量(bytes)
"bytesOut" : 553137147925, --資料庫發出的數據總量(bytes)
"numRequests" : 2475184328 --發送到資料庫的請求量
},
"opcounters" : {
"insert" : 687531883, --server啟動以來總的insert數據量
"query" : 711010343, --server啟動以來總的query數據量
"update" : 0, --server啟動以來總的update數據量
"delete" : 0, --server啟動以來總的delete數據量
"getmore" : 6484, --server啟動以來調用任何游標的getMore總次數
"command" : 1287537 --server啟動以來執行其他命令的總次數
},
"opcountersRepl" : {
"insert" : 0,
"query" : 0,
"update" : 0,
"delete" : 0,
"getmore" : 0,
"command" : 0
},
"recordStats" : {
"accessesNotInMemory" : 6,
"pageFaultExceptionsThrown" : 5,
"WORKING_COLLECTION" : {
"accessesNotInMemory" : 0,
"pageFaultExceptionsThrown" : 0
},
"admin" : {
"accessesNotInMemory" : 0,
"pageFaultExceptionsThrown" : 0
},
"local" : {
"accessesNotInMemory" : 0,
"pageFaultExceptionsThrown" : 0
},
"mdsp" : {
"accessesNotInMemory" : 6,
"pageFaultExceptionsThrown" : 5
},
"mydb" : {
"accessesNotInMemory" : 0,
"pageFaultExceptionsThrown" : 0
},
"test" : {
"accessesNotInMemory" : 0,
"pageFaultExceptionsThrown" : 0
}
},
"writeBacksQueued" : false,
"mem" : {
"bits" : 64,
"resident" : 43,
"virtual" : 2326,
"supported" : true,
"mapped" : 992,
"mappedWithJournal" : 1984
},
"metrics" : {
"document" : {
"deleted" : NumberLong(0),
"inserted" : NumberLong(10),
"returned" : NumberLong(1067),
"updated" : NumberLong(20)
},
"getLastError" : {
"wtime" : {
"num" : 0,
"totalMillis" : 0
},
"wtimeouts" : NumberLong(0)
},
"operation" : {
"fastmod" : NumberLong(13),
"idhack" : NumberLong(118),
"scanAndOrder" : NumberLong(122)
},
"queryExecutor" : {
"scanned" : NumberLong(10262)
},
"record" : {
"moves" : NumberLong(0)
},
"repl" : {
"apply" : {
"batches" : {
"num" : 0,
"totalMillis" : 0
},
"ops" : NumberLong(0)
},
"buffer" : {
"count" : NumberLong(0),
"maxSizeBytes" : 268435456,
"sizeBytes" : NumberLong(0)
},
"network" : {
"bytes" : NumberLong(0),
"getmores" : {
"num" : 0,
"totalMillis" : 0
},
"ops" : NumberLong(0),
"readersCreated" : NumberLong(0)
},
"oplog" : {
"insert" : {
"num" : 0,
"totalMillis" : 0
},
"insertBytes" : NumberLong(0)
},
"preload" : {
"docs" : {
"num" : 0,
"totalMillis" : 0
},
"indexes" : {
"num" : 0,
"totalMillis" : 0
}
}
},
"ttl" : {
"deletedDocuments" : NumberLong(0),
"passes" : NumberLong(26)
}
},
"ok" : 1
}

閱讀全文

與pythongetlasterror相關的資料

熱點內容
程序員試用期匯報問題協助怎麼寫 瀏覽:127
抖音演算法到底是什麼 瀏覽:126
哪個vlan技術對報文加密 瀏覽:570
單片機定時電路 瀏覽:672
山西平台伺服器雲主機 瀏覽:700
按摩肚臍解壓視頻 瀏覽:989
php55安裝教程 瀏覽:137
雲伺服器怎麼查找本機域名 瀏覽:22
qd123y壓縮機參數 瀏覽:385
程序員媽媽懷孕 瀏覽:490
金普國際編程 瀏覽:537
java什麼是引用類型 瀏覽:944
這是命令嗎txt 瀏覽:314
支付寶android包名 瀏覽:154
eclipsemaven命令 瀏覽:68
24路伺服器配什麼cpu 瀏覽:466
壓縮文件和解壓文件哪個快 瀏覽:675
亞馬遜雲伺服器視頻通話 瀏覽:912
金融知識app哪個好 瀏覽:978
農行理財app收益在哪裡 瀏覽:969