导航:首页 > 编程语言 > 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相关的资料

热点内容
python编程基础豆瓣 浏览:706
程序员乱码是什么意思 浏览:370
交友app怎么删除动态 浏览:90
男士穿衣哪个app好 浏览:36
如何把桌面软件改造成app 浏览:740
我的世界如何打开最近玩的服务器 浏览:382
程序员试用期汇报问题协助怎么写 浏览:129
抖音算法到底是什么 浏览:128
哪个vlan技术对报文加密 浏览:570
单片机定时电路 浏览:676
山西平台服务器云主机 浏览:700
按摩肚脐解压视频 浏览:991
php55安装教程 浏览:139
云服务器怎么查找本机域名 浏览:22
qd123y压缩机参数 浏览:387
程序员妈妈怀孕 浏览:492
金普国际编程 浏览:539
java什么是引用类型 浏览:946
这是命令吗txt 浏览:318
支付宝android包名 浏览:156