ºÜºÃµÄc++ºÍPython»ìºÏ±à³ÌÎÄÕÂ
http://www.cppblog.com/jacky2019/archive/2007/05/17/24269.html
c++ÖÐǶÈëpythonÈëÃÅ1
±¾ÈËÊÇÓÃvc2003+python2.5ѧϰµÄ£¬ÆäËüµÄÒ²Ó¦¸Ã²î²»Á˶àÉÙ
0. »µ¾³ÉèÖÃ
°ÑpythonµÄinclude/libsĿ¼·Ö±ð¼Óµ½vcµÄinclude/lib directoriesÖÐÈ¥¡£ÁíÍ⣬ÓÉÓÚpythonûÓÐÌṩdebug lib£¬ÌåµØËµ£¬¾ÍÊÇûÓÐÌṩpython25_d.libÁË¡£Äã¿ÉÒÔ×Ô¼º±àÒëpythonµÄÔ´´úÂëÀ´µÃµ½python25_d.libµÄ£¬Å¼»¹Ã»ÊÔ¹ý£¬ºÇºÇ¡£¶øÇÒÍøÉÏÕÒÁËÒ»ÏÂҲûÏÂÔØµ½¡£ËùÒÔ£¬Èç¹ûÄãÏëÒªÔÚdebugÏÂÔËÐгÌÐòµÄ»°£¬ÄãÒª°Ñpyconfig.h£¨ÔÚpython25/include/Ŀ¼Ï£©µÄ´ó¸ÅÊÇÔÚ283ÐУ¬°Ñpragma comment(lib,"python25_d.lib")¸Ä³Épragma comment(lib,"python25.lib")£¬ÈÃpython¶¼Ê¹Ó÷Çdebug lib.
1. ¿ªÊ¼±à³ÌÁË
#include <python.h>
µÚÒ»²½¾ÍÊǰüº¬pythonµÄÍ·Îļþ
2. ¿´Ò»¸öºÜ¼òµ¥µÄÀý×Ó
1)pythonÎļþtest.py£¬ºÜ¼òµ¥µÄ¶¨ÒåÁËÒ»¸öº¯Êý
#Filename test.py
def Hello():
print "Hello, world!"
Õâ¸öÓ¦¸ÃÄÜ¿´¶®µÄ°É£¿·ñÔòµÄ»°£¬»ØÈ¥ÔÙÁ·Á·python°É£¬ºÇºÇ¡£¡¶¼òÃ÷Python½Ì³Ì¡·Swaroop, C. H. Öø¡£Éò½àÔª Òë¡£
2)cppÎļþ
#include <python.h> //°üº¬Í·Îļþ£¬ÔÚc++ÖÐǶÈëpython£¬ÕâÊDZØÐëµÄ
int main()
{
Py_Initialize();
PyObject * pModule = NULL;
PyObject * pFunc = NULL;
pModule = PyImport_ImportModule("test");
pFunc = PyObject_GetAttrString(pModule, "Hello");
PyEval_CallObject(pFunc, NULL);
Py_Finalize();
return 0;
}
µÚÒ»²½»¹Êǰüº¬Í·Îļþ
µÚ¶þ²½£¬Ê¹ÓÃpython֮ǰ£¬Òªµ÷ÓÃPy_Initialize();Õâ¸öº¯Êý½øÐгõʼ»¯¡£
°ïÖúÎĵµÖÐÈçÊÇ˵£º
The basic initialization function is Py_Initialize(). This initializes the table of loaded modules, and creates the fundamental modules __builtin__, __main__, sys, and exceptions. It also initializes the module search path (sys.path).
·´Õý£¬Ò»¿ªÊ¼ÄãÒ»¶¨Òªµ÷Óá£
µÚÈý²½£¬ÉùÃ÷һЩPythonµÄ±äÁ¿£¬PyObjectÀàÐ͵ġ£ÆäʵÉùÃ÷Ò²¿É·ÅÔÚÇ°Ãæ£¬Õâ¸öµ¹ÊÇÎÞËùνµÄ¡£
µÚËIJ½£¬import module£¬Ò²¾ÍÊÇÄãµÄ½Å±¾Ãû×Ö£¬²»ÐèÒª¼Óºó׺Ãû£¬·ñÔò»á³ö´íµÄ¡£
µÚÎå²½£¬´ÓÄãimport½øÀ´µÄmoduleÖеõ½ÄãÒªµÄº¯Êý
pFunc = PyObject_GetAttrString(pModule, "Hello");
ÉÏÃæµÄÀý×ÓÒѾ¹»Çå³þ
Ïà¹ØÎĵµ£º
Ä£¿é
Ò».¼ò½é
Ä£¿é»ù±¾ÉϾÍÊÇÒ»¸ö°üº¬ÁËËùÓÐÄ㶨ÒåµÄº¯ÊýºÍ±äÁ¿µÄÎļþ¡£ÎªÁËÔÚÆäËû³ÌÐòÖÐÖØÓÃÄ£¿é£¬Ä£¿éµÄÎļþÃû±ØÐëÒÔ.pyΪÀ©Õ¹Ãû¡£
ÀýÈ磺
#!/usr/bin/python
# Filename: using_sys.py
import sys
print 'The command line arguments are:'
for i in sys.argv:
print i
print '\n ......
import sys
import os
import datetime
import time
class ArgsDealwith:
def arg_environment(self, args):
filepath = ('PYTHON_PATH', 'path')
for i in filepath:
&nbs ......
PythonµÄÃæÏò¶ÔÏóÐÔÖÊ
ÀàºÍ¶ÔÏóÊÇÃæÏò¶ÔÏó±à³ÌµÄÁ½¸öÖ÷Òª·½Ãæ¡£Àà´´½¨Ò»¸öÐÂÀàÐÍ£¬¶ø¶ÔÏóÕâ¸öÀàµÄ ʵÀý ¡£ÕâÀàËÆÓÚÄãÓÐÒ»¸öintÀàÐ͵ıäÁ¿£¬Õâ´æ´¢ÕûÊýµÄ±äÁ¿ÊÇintÀàµÄʵÀý£¨¶ÔÏ󣩡£
ÐèҪעÒâµÄÊÇ£¬ÔÚPythonÖУ¬¼´±ãÊÇÕûÊýÒ²±»×÷Ϊ¶ÔÏó£¨ÊôÓÚintÀࣩ¡£ÕâºÍC++¡¢Java£¨1.5°æÖ®Ç°£©°ÑÕûÊý´¿´â×÷ΪÀàÐÍÊDz»Í¬µÄ¡£Í¨¹ ......
¼ÆËãÏß³ÌÖ´ÐÐijÏîÈÎÎñÏûºÄµÄʱ¼äʱ£¬Ðí¶à¿ª·¢ÈËÔ±»áµ÷ÓÃGetTickCount/GetTickCount64±àдÈçϵĴúÂ룺
// Get the current time (start time)
ULONGLONG qwStartTime = GetTickCount64();
// Perform complex algorithm here
// Subtract start time from current time to get duration
ULONGLONG dwElapsedTime = Get ......
×î½üÒòΪÑо¿Ò»¸ö¶«Î÷£¬²¢ÇÒÔںܾÃÒÔǰ¾ÍÏë°ÑpythonºÃºÃ¿´¿´¡£ÕýºÃÂú×ãÎ񵀼̮æÐÄ¡£ÎÒÿÌìÉϰà×öµÃÓÎÏ·¶¼ÊÇÓÃlua£¬Ò²ÊÇÒ»ÃźÜÇ¿´óµÄ½Å±¾ÓïÑÔ¡£¿ÉÄÜÎÒ¸üϲ»¶pythonµÄËõ½øÇø·ÖºÍÃæÏò¶ÔÏó°É¡£ ½ñÌìֻдһ¸ö¼òµ¥µÄÀý×Ó¡£Ò»¸ö¼òµ¥µÄpython½Å±¾£¬¾ÍÒ»¸öº¯Êý£¬ÓÃC/C++È¥µ÷Ó᣿ÉÄÜÕâÒ²ÊÇ×÷Ϊ³ÌÐòÀ´Ëµ×î¹ØÐĵÄÒ»¼þÊ¡£ËùÒÔÎÒµÄpytho ......