如何组合 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()
。
对于我的一个机器人项目,我试图从 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()
。