2013-03-11 52 views
14

Ich versuche, einige einfache Einfädeln in Python laufen mit:AssertionError wenn in Python threading

t1 = threading.Thread(analysis("samplequery")) 
t1.start() 

other code runs in here 

t1.join() 

Unforunately den Fehler Ich erhalte:

"AssertionError: group argument must be none for now"

Ich habe noch nie Einfädeln umgesetzt Python vorher, also bin ich ein wenig unsicher, was falsch läuft. Hat jemand eine Idee was das Problem ist?

Ich bin mir nicht sicher, ob es überhaupt relevant ist, aber Analyse ist eine Methode, die aus einer anderen Datei importiert wird.

Ich hatte auch eine Follow-up-Abfrage. Die Analyse gibt ein Wörterbuch zurück. Wie würde ich das für die Verwendung in der ursprünglichen Methode zuweisen?

t1 = threading.Thread(target=analysis("samplequery")) 

Sie wahrscheinlich gemeint analysis das Laufziel zu machen, aber 'samplequery das Argument beim Start: anstatt die target Schlüsselwort-Parameter angeben

Dank

Antwort

29

Sie wollen

t1 = threading.Thread(target=analysis, args=("samplequery",)) 

Der erste Parameter zu Thread() ist das group Argument, und es akzeptiert derzeit nur None als Argument.

Vom threading.Thread() documentation:

This constructor should always be called with keyword arguments. Arguments are:

  • group should be None ; reserved for future extension when a ThreadGroup class is implemented.
  • target is the callable object to be invoked by the run() method. Defaults to None , meaning nothing is called.
+0

Dies noch das Ergebnis von 'analysis' zum Thema Konstruktor übergibt, die es sei denn, die Funktion zurückkehrt falsch ist eine aufrufbar. –

+0

@ g.d.d.c: Ja, kam dazu. :-) –

+0

Kein Problem, nur dafür sorgen. :) –

5

Sie müssen das target Attribut zur Verfügung zu stellen:

t1 = threading.Thread(target = analysis, args = ('samplequery',))