Tag: python

如何让Python GUI调用用C编写的遗传算法

我是Stack Overflow的新手。 我有一个用C编写的遗传算法,它以0-100的forms接受用户输入,并输出一个数字数组。 C代码是一个完整的独立编译程序。 它有一个命令行界面。 我对编程比较陌生,主要是黑客攻击,直到找到特定任务的解决方案。 我在阅读Python Subprocess管理文档时非常困惑。 我有一个使用tkinter用Python编写的GUI,我有一个框,用户可以在其中键入他们的响应值(0-100)。 我的代码中也有一个空数组,我希望用遗传算法的输出填充。 用户将使用该数组作为某些内容,给出另一个响应(0-100)C代码将获取该响应,生成另一个数字数组,并继续该过程。 我的问题是,任何人都能用简单的术语向这个新手解释如何使用子进程模块将我的python GUI和C代码遗传算法链接到一起吗? 谢谢!

在Python中编译C代码的问题

我在Windows 7,64位中使用Anaconda for Python 2.7.10。 我也使用Visual Studio 2010.我安装了Microsoft Visual Studio for Python。 当我尝试在python中编译C代码时(在cmd中): C:\Anaconda\sms-tools-master\software\transformations_interface>python compileModule.py build_ext –inplace 我得到了很多警告和一些错误,最后一部分如下: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\link.exe /DLL / nologo /INCREMENTAL:NO /LIBPATH:C:\Anaconda\libs /LIBPATH:C:\Anaconda\PCbuild\am d64 m.lib /EXPORT:initutilFunctions_C build\temp.win-amd64-2.7\Release\utilFunct ions.obj build\temp.win-amd64-2.7\Release\cutilFunctions.obj /OUT:C:\Anaconda\sm s-tools-master\software\models\utilFunctions_C\utilFunctions_C.pyd /IMPLIB:build \temp.win-amd64-2.7\Release\utilFunctions_C.lib /MANIFESTFILE:build\temp.win-amd 64-2.7\Release\utilFunctions_C.pyd.manifest LINK : fatal error LNK1181: cannot open input file ‘m.lib’ error: command ‘C:\\Program […]

如何做简单,可靠的网络短信?

我现在正在使用套接字在各种进程之间进行通信。 一切都在同一台机器上运行,所以没有数据包丢失,我也没有读取超时等。消息通常是小数据块(JSON,有时是二进制)。现在我想做跨机器通信。 客户端/服务器连接通常如下所示:客户端告诉服务器开始某些处理(传递任务描述),服务器完成工作并回传进度,客户端可以选择在中间发送终止消息。 完成后,服务器将在客户端完全断开连接时保持监听(即会话结束,启动新任务会启动新会话。) 我该如何实施沟通? 我可以轻松地继续在网络上使用套接字,但我的理解是,我现在需要添加大量的error handling来识别消息何时无法通过并以某种方式将其传达回服务器。 我想要的只是send(message, target)并确保完整的消息被传输; 当对方死了时加上一些通知。 我已经看到有一些像zero-mq这样的库声称可以做到这一点但也有更多,我不确定这样的消息库是否真的是必要的。 有一些易于使用的库可以做一些基本的沟通吗? 我正在使用C ++和Python,而且BSD样式许可证绝对是库的首选。 图书馆也应该相当稳定,因为沟通部分并不是真正重要的,我希望能够坚持一个解决方案。

如何在C + python + UART中正确表示单词?

在串行通信中,我需要将来自python的密文发送到UART,它能够使用C读取它。 首先,在python方面使用这种技术: ciphertext=(b’\x24\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x00\x30\x69\xc4\xe0\xd8′) ser.write(ciphertext) 在C端,我将收到的密文放在缓冲区中。 我测试如果第一个字节24,数据包的开始: if (buffer_RX[0]==’\x24′) { for (i=1;i<=17;i++) //sizeof(buffer_RX)==17 { printf("%x \n",buffer_RX[i]); } } else { printf("It is not a packet!"); } 我的结果是: 70 b4 c5 5a d8 cd b7 80 6a 7b 0 30 69 c4 e0 d8 所以我有两个问题, – 拳头是为什么\x00以这种方式显示,我的意思是只有一个零0? – 第二个是我怎么能有相同的表示: const unsigned int ciphertext[4] = {0x70b4c55a, 0xd8cdb780, 0x6a7b0030,0x69c4e0d8}; […]

在C / Objective-C中使用Python的bisect

我希望将这个用Python编写的类https://stackoverflow.com/a/4113400/12920移植到Objective-C或C中。 它使用了一种名为bisect.bisect_right东西。 我对Python没有太多经验,那么如何在C / obj-c中实现呢?

我有两个非常相似的C函数从python和Java调用。 如何将2个库合并为1个可以从两种语言调用的库?

基本上我有2个C函数“encrypt”的实现,我使用ctypes和java使用JNI从python调用。 我被告知要使用两个用于java和python的动态库,并将它们组合成一个可以从两者中调用的静态库。 为了澄清,这里是使用JNI的Java的C函数实现: #include “jniTest.h” #include JNIEXPORT void JNICALL Java_jniTest_passBytes (JNIEnv *env, jclass cls, jbyteArray array) { unsigned char *buffer = (*env)->GetByteArrayElements(env, array, NULL); jsize size = (*env)->GetArrayLength(env,array); for(int i=0; iReleaseByteArrayElements(env, array, buffer, 0); } 因此,该函数接受一个字节数组,并将每个字节递增1,然后返回新字节数组的每个元素。 这是java方面: class jniTest{ public static native void passBytes(byte[] bytes); static{ System.loadLibrary(“encrypter”); { public static void main(String[] args){ Tester tester […]

性能上扩展python / numpy的最佳方法

因为有很多方法可以为python编写二进制模块,所以如果我希望尽可能地提高代码的某些段的性能,那么我可以根据经验提出最佳方法的建议。 据我所知,可以使用python / numpy C-api编写扩展,或者包装一些已经编写的纯C / C ++ / Fortran函数,以便从python代码中调用。 当然,像Cython这样的工具是最简单的方法,但我认为手动编写代码可以提供更好的控制并提供更好的性能。 问题,也可能是一般性的,是使用哪种方法。 写一个C或C ++扩展名? 包装外部C / C ++函数或使用回调到python函数? 我在阅读Langtangen的“计算科学的Python脚本”第10章后写了这个问题,其中有几种方法可以比较python和C之间的接口。

使用ctypes从Python中获取C中的自定义数据类型的地址

我在C中有一个带有以下字段的vector结构, struct vector { unsigned char* data; unsigned long size; unsigned long elemsize; unsigned long capacity; }; 并且有一些函数相应地对vector实例起作用,例如: struct vector* vector_new(unsigned long elemsize); void vector_delete(struct vector* vec); void vector_push_back(struct vector* vec, void* value, unsigned long elemsize); void vector_reserve(struct vector* vec, unsigned long cap); … 等等(模仿c ++风格的std::vector )。 在我的代码库的其他部分,我有组件结构,例如mirror : struct mirror { double R; double […]

变量的Python内存管理

我有一个关于python内存管理的问题。 我有以下代码 def operation(data): #some manipulations on data result=something.do(data) #some manipulations on result return result 现在我多次调用此函数operation (可能超过200次)。 每当我调用operation python是否对result变量使用相同的内存? 与在C我们可以使用Malloc一次分配内存并使用相同的内存以避免碎片。

从Python文件调用C函数。 使用Setup.py文件时出错

我的问题如下:我想从我的Python文件中调用一个C函数并将值返回给该Python文件。 我尝试了在Python中使用嵌入式C的以下方法(以下代码是名为“mod1.c”的C代码。我使用的是Python3.4,因此格式遵循文档指南中给出的格式。问题来自于我打电话我的安装文件(下面的第二个代码)。#include #include“sum.h” static PyObject* mod_sum(PyObject *self, PyObject *args) { int a; int b; int s; if (!PyArg_ParseTuple(args,”ii”,&a,&b)) return NULL; s = sum(a,b); return Py_BuildValue(“i”,s); } /* DECLARATION OF METHODS */ static PyMethodDef ModMethods[] = { {“sum”, mod_sum, METH_VARARGS, “Descirption”}, // {“methName”, modName_methName, METH_VARARGS, “Description..”}, modName is name of module and methName is name of […]