Kolben-multi-Prozess-worker-pool in Python
Bin ich ziemlich verwirrt auf dem besten Weg, das zu tun, was ich zu tun versuche.
Habe ich eine Reihe von jobs, die eine Menge Zeit zu verarbeiten, und so möchte ich zum initialisieren einer erheblichen pool der "Arbeiter" auf die app-start-up, das in der Lage sein zu handhaben, eine Anfrage bei der freien.
Aufteilung des Prozesses:
- Erstellen 10 Klassifikatoren (Arbeitnehmer) auf die app-start-up, und halten Sie Sie im Leerlauf irgendwo.
- Wenn app gestartet, die Anfrage kommt durch Kolben POST-Befehl.
- Anfrage wird an eine verfügbare Klassifikator.
- Classifier Ergebnis der Arbeit.
Wie würde ich gehen über das tun dies?
EDIT: Es ist erwähnenswert, dass die Klassifikatoren nehmen eine erhebliche Menge an Zeit zu starten und so müssen verfügbar sein und die bereits ausgeführt werden, wenn die Arbeit es Ihnen übergeben wurde.
class View(views.MethodView):
def get(self):
return render_template('index.html')
def post(self):
app_form_elements = request.form
#Assumption button clicked on browser interface...
jobs = ["job one", "job two", "job three"]
for job in jobs:
#Send each job to next available classifier pool.
return self.get()
app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET','POST'])
app.debug = True
if __name__ == '__main__':
app.run(threaded=True)
EDIT:
Den Klassifizierer setup ist so etwas wie dieses:
class Classifier():
"""
Class will take in a classifier and a test data set and print out the overall accuracy.
"""
def __init__(self):
self.load = self.toSomeStuff()
print('classifier initialised.\n')
def doSomeWork(self):
#Initialised classifier objects called with work to do.
initialise_classifier = Classifier()
#the jobs
initialise_classifier.doSomeWork()
Also im Prinzip brauche ich einen pool von pre-initialized-Klassifikatoren und dann in der Lage sein, um den Anruf "doSomeWork" - Funktion, mit jeden job, der kommt über die post-Methode.
- Würde es nicht mehr Sinn machen, die diese lange Dauer der Prozesse in eine Warteschlange, mit so etwas wie Sellerie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht tun dies in Fläschchen. Aber Sie können das gleiche Ergebnis erzielen, beispielsweise unter Verwendung von uWSGI eingebauten Funktionalitäten oder Aufgabe Warteschlangen wie Sellerie.
Werfen Sie einen Blick auf diese Antwort für mehr details.
kann man es mit RQ (http://python-rq.org/) und Modul Kolben-rq (https://github.com/mattupstate/flask-rq)