我有一个python程序,可以进行一些机器学习。这应该可以通过网络使用HTTP访问。由于我希望Apache充当服务器,我使用python脚本使用python multiprocessing.connection
将收到的数据发送到我的程序。
例如,发送脚本将是
#!/usr/bin/python
from multiprocessing.connection import Client
import cgi
from job import *
form = cgi.FieldStorage()
address = ('localhost', 6000)
conn = Client(address, authkey='secretpass')
conn.send(form)
接收脚本将是
from multiprocessing.connection import Listener
import threading
print "Starting listener"
address = ('localhost', 6000)
listener = Listener(address, authkey='secretpass')
while True:
conn = listener.accept()
msg = conn.recv()
conn.close()
# Do stuff with msg
listener.close()
一旦我触发了url,Apache就会调用第一个脚本,它会将python对象发送到其他脚本。其他脚本将接收它并进行处理。
现在,我想将ML部分放入docker容器,而Apache将在主机系统中。在那种情况下,我将如何沟通?
答案 0 :(得分:0)
作为Processing库的一部分,您将找到进程Queue。存在此结构以允许在进程之间传递消息。如果您正在使用Linux,则需要设置全局变量并推送消息。模式通常是:任何进程都可以发布,并且单个进程可以读取。使用两个或多个队列,您可以轻松设置来回通信,而无需担心冲突或丢失消息。
在Windows和其他限制性更强的系统中,这变得更加困难,因为进程之间没有共享的全局变量,也无法在创建进程时传递复杂的结构。在Windows中,简单地坚持使用线程要容易得多。
python中的多处理/线程的详细信息可以在这里找到: