2017-09-24 1 views
0

Ich habe eine grundlegende Frage in Python Threading.kann ich einen einzelnen Thread verwenden, um mehrere Funktionen ohne Verkettung von Funktionen auszuführen?

Wenn ich Beispiele sah, verstand ich, dass die Threads eine Funktion ausführen müssen. kann ich einen einzelnen Thread verwenden, um mehrere Funktionen seriell auszuführen?

Wenn ja, andere als die nächste Funktion aus dem aktuellen aufrufen?

wie kann ich die "n" -Funktionen übergeben, die ich anfangs seriell ausführen muss, anstatt von jeder Funktion zu verketten?

+0

Durch einen Wrapper mit Funktion, die Ihre 'n' Funktionen übernimmt, sicher. Gibt es einen Grund, warum Sie diesen Ansatz nicht wollen? –

Antwort

0

Wenn Sie nur eine Liste von Funktionen in einem einzigen Thread ausgeführt werden sollen:

funcs = [ 
    myfunc1, 
    myfunc2, 
    # ... 
] 

def thread_func(): 
    for f in funcs: 
     f(arg1, arg2) 

Beachten Sie, dass die Funktionen alle den gleichen Satz von Parametern akzeptieren müssen.

+0

Ich rufe Thread wie diesen thread = Thread (target = sample, kwarts = v2) – syam

+0

Wurde gesucht, ob ich alle meine Funktionen mit einem einzigen Thread selbst seriell abschließen kann. mein Gesamtsystem enthält 10 Threads, jeder für jeden Server und jeder Thread muss einige Funktionen seriell ausführen. Dies ist, was ich suche – syam

0

offensichtlich ja!

annehmen, dass Sie eine Nummer erhalten möchten und fügen Sie 5 bis es
dann Sie 2, um es hinzufügen möchten, und beide am sime Zeit drucken Sie einfach:

def plusfive(num): 
    print(num+5) 

def plustwo(num): 
    print(num+2) 
    plusfive(num) 

plustwo(34) 
+0

Tnx für die Antwort. Aber ich möchte nicht die Funktion verketten, bedeutet, einen expliziten Aufruf von einer Funktion zu machen, um die nächste Funktion – syam

+0

auszulösen, dann kann man eine Liste verwenden und sie mit einer for-Schleife arbeiten lassen. wie @ Jonathon Reinhart erwähnt – bob

Verwandte Themen