Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和C++; 我在C++中编写了一个DLL(Windows,MS VS 17),它需要在某个时候调用Python脚本——它应该读取JSON编码的字符串,处理它并返回JSON编码结果。不需要异步模式或“光速”,但我需要或多或少的快速响应-I。E最多1-5秒。以下是我考虑的方法和评论: 将字符串作为命令行参数传递。显然,这不是最好的选择——更不用说字符串长度限制了 使用临时文件。在我的例子中,最好避免这种做法,因为尽管每次启动通常需要运行一次Python部分,但启动的数量可能相当大 使用TCP/IP套接字(用于localhost)/pipe。对于这样一项任务来说,这两种方法似乎都有些过分——我没有不断变化的连续数据流。此外,在窗户里,这可能是一种痛苦 使用共享内存。共享内存是个不错的选择,但是我不能找到一种方法来在C++和Python中使用相同的段。 将Python部分嵌入C++。这里我有两个顾虑:a)Python环境应该安装在目标机器上,不是吗?b) python脚本有一个import,它导入一个从pip安装的包,不幸的是,我无法避免它。嵌入时是否有适当的方法处理导入 在我的情况下,有一种简单的C++与Python互操作的方法吗?< P>因为你是针对Windows的,选项(2)是最好的,但是使用临时文件 CealFeFILE(…文件FieldEx临时)< /C>。这是有效的共享内存(在操作系统级别,两者都由虚拟内存管理器管理),但您可以获得文件语义_C++_Python 3.x_Windows_Ipc - Fatal编程技术网

Python和C++; 我在C++中编写了一个DLL(Windows,MS VS 17),它需要在某个时候调用Python脚本——它应该读取JSON编码的字符串,处理它并返回JSON编码结果。不需要异步模式或“光速”,但我需要或多或少的快速响应-I。E最多1-5秒。以下是我考虑的方法和评论: 将字符串作为命令行参数传递。显然,这不是最好的选择——更不用说字符串长度限制了 使用临时文件。在我的例子中,最好避免这种做法,因为尽管每次启动通常需要运行一次Python部分,但启动的数量可能相当大 使用TCP/IP套接字(用于localhost)/pipe。对于这样一项任务来说,这两种方法似乎都有些过分——我没有不断变化的连续数据流。此外,在窗户里,这可能是一种痛苦 使用共享内存。共享内存是个不错的选择,但是我不能找到一种方法来在C++和Python中使用相同的段。 将Python部分嵌入C++。这里我有两个顾虑:a)Python环境应该安装在目标机器上,不是吗?b) python脚本有一个import,它导入一个从pip安装的包,不幸的是,我无法避免它。嵌入时是否有适当的方法处理导入 在我的情况下,有一种简单的C++与Python互操作的方法吗?< P>因为你是针对Windows的,选项(2)是最好的,但是使用临时文件 CealFeFILE(…文件FieldEx临时)< /C>。这是有效的共享内存(在操作系统级别,两者都由虚拟内存管理器管理),但您可以获得文件语义

Python和C++; 我在C++中编写了一个DLL(Windows,MS VS 17),它需要在某个时候调用Python脚本——它应该读取JSON编码的字符串,处理它并返回JSON编码结果。不需要异步模式或“光速”,但我需要或多或少的快速响应-I。E最多1-5秒。以下是我考虑的方法和评论: 将字符串作为命令行参数传递。显然,这不是最好的选择——更不用说字符串长度限制了 使用临时文件。在我的例子中,最好避免这种做法,因为尽管每次启动通常需要运行一次Python部分,但启动的数量可能相当大 使用TCP/IP套接字(用于localhost)/pipe。对于这样一项任务来说,这两种方法似乎都有些过分——我没有不断变化的连续数据流。此外,在窗户里,这可能是一种痛苦 使用共享内存。共享内存是个不错的选择,但是我不能找到一种方法来在C++和Python中使用相同的段。 将Python部分嵌入C++。这里我有两个顾虑:a)Python环境应该安装在目标机器上,不是吗?b) python脚本有一个import,它导入一个从pip安装的包,不幸的是,我无法避免它。嵌入时是否有适当的方法处理导入 在我的情况下,有一种简单的C++与Python互操作的方法吗?< P>因为你是针对Windows的,选项(2)是最好的,但是使用临时文件 CealFeFILE(…文件FieldEx临时)< /C>。这是有效的共享内存(在操作系统级别,两者都由虚拟内存管理器管理),但您可以获得文件语义,c++,python-3.x,windows,ipc,C++,Python 3.x,Windows,Ipc,因为您的目标是Windows,选项(2)是最好的,但是请使用临时文件CreateFile(…file\u ATTRIBUTE\u temporary)。这是有效的共享内存(在操作系统级别,两者都由虚拟内存管理器管理),但您可以获得文件语义 关于共享内存-您可以使用命名的共享内存段并将名称传递给Python脚本。不确定什么是用于共享内存的Python API。关于共享内存-您可以使用命名的共享内存段并将名称传递给Python脚本。不确定什么是用于共享内存的Python API。谢谢,小姐!如何从P

因为您的目标是Windows,选项(2)是最好的,但是请使用临时文件
CreateFile(…file\u ATTRIBUTE\u temporary)
。这是有效的共享内存(在操作系统级别,两者都由虚拟内存管理器管理),但您可以获得文件语义

关于共享内存-您可以使用命名的共享内存段并将名称传递给Python脚本。不确定什么是用于共享内存的Python API。关于共享内存-您可以使用命名的共享内存段并将名称传递给Python脚本。不确定什么是用于共享内存的Python API。谢谢,小姐!如何从Python访问它?仅仅通过它的标准I/O功能?@JamesFrezz:是的。Python询问OS,OS在RAM缓存中有文件,因为C++代码告诉OS它是一个临时文件。因此,操作系统立即给了Python结果。我检查了这种方法,发现在当前目录中创建了一个零长度的文件——这不是什么大问题,但有点令人恼火。所以我决定使用@Andrey的建议,使用共享内存。以防万一,如果有人在处理共享内存时遇到了一个导入错误——考虑升级到Python 3.8。@ JAMESFRZZ:好吧,这取决于你在哪里创建它。毕竟,它有文件语义,其中包括一个文件路径。有一个
GetTempPath
,它可能会提供一个更合适的路径。谢谢,MSalters!如何从Python访问它?仅仅通过它的标准I/O功能?@JamesFrezz:是的。Python询问OS,OS在RAM缓存中有文件,因为C++代码告诉OS它是一个临时文件。因此,操作系统立即给了Python结果。我检查了这种方法,发现在当前目录中创建了一个零长度的文件——这不是什么大问题,但有点令人恼火。所以我决定使用@Andrey的建议,使用共享内存。以防万一,如果有人在处理共享内存时遇到了一个导入错误——考虑升级到Python 3.8。@ JAMESFRZZ:好吧,这取决于你在哪里创建它。毕竟,它有文件语义,其中包括一个文件路径。有一个
GetTempPath
,它可能会给出一个更合适的路径。