如何组合 Python 32 位和 64 位模块

How to combine Python 32bit and 64bit modules

对于我的一个机器人项目,我试图从 Nao Robot 的相机中获取图像并使用 Tensorflow 进行对象识别。

问题是机器人的 NaoQi API 是基于 Python2.7 32 位构建的。 (http://doc.aldebaran.com/1-14/dev/python/install_guide.html)

Tensorflow 对象识别 API 仅适用于 64 位。 (https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md and https://www.tensorflow.org/install/install_windows)

我正在使用 Windows 10,我同时安装了 Python 2.7 32 位和 3.6 64 位,我能够独立 运行 模块,但我无法通过两者之间的图像。

是否有解决此问题的解决方法?谢谢。

如果你说一个只有 32 位而另一个只有 64 位,我认为没有办法让两个模块在同一个解释器中工作。

因此,考虑 运行 两个解释器,让它们通过消息交换、远程过程调用等相互通信。

我强烈反对使用共享内存部分、UNIX 或 TCP 套接字,因为有太多底层细节需要处理,这会分散您对真正 objective 工作的注意力。

相反,考虑一些高级库,例如 zeromq which has also python bindings,它使用起来非常简单:您可以通过网络发送二进制数据、字符串或 python 对象,它们会自动序列化并使用 pickle 反序列化。

有用的读物​​:

示例客户端:

import zmq

context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")

print("Sending request...")
socket.send_string("Hello")
#  Get the reply.
message = socket.recv_string()
print(f"Received reply: {message}")

示例服务器:

import zmq

context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")

while True:
    message = socket.recv_string()
    print(f"Received request: {message}")
    socket.send_string("Hello")

socket.send_string() 类似,您有 socket.send_json()socket.send_pyobj()

检查the documentation