2017-09-24 4 views
0

J'ai une question basique dans le threading python. Lorsque j'ai vu des exemples, j'ai compris que les threads ont besoin d'une fonction à exécuter. Puis-je utiliser un seul thread pour exécuter plusieurs fonctions de manière sérielle?puis-je utiliser un seul thread pour exécuter plusieurs fonctions sans chaîner des fonctions?

Si oui, d'une autre manière que d'appeler la fonction suivante à partir de courant?

comme n'importe quel moyen que je peux passer les «n» fonctions que j'ai besoin d'exécuter en série initialement lui-même plutôt que d'enchaîner de chaque fonctions?

+0

En ayant une enveloppe fonction qui prend vos «n» fonctions, bien sûr. Une raison pour laquelle vous ne voulez pas cette approche? –

Répondre

0

Si vous voulez juste pour exécuter une liste de fonctions dans un seul thread:

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

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

Notez que les fonctions doivent tous accepter le même ensemble de paramètres.

+0

J'appelle thread comme ce fil = Thread (target = sample, kwargs = v2) – syam

+0

Était en train de regarder si je peux remplir toutes mes fonctions avec un seul fil lui-même en série. mon système global contient 10 threads, chacun pour chaque serveur et chaque thread doit exécuter certaines fonctions en série. C'est ce que je cherche – syam

0

évidemment oui!

suppose que vous voulez obtenir un numéro et ajouter 5 à ce
vous voulez ajouter 2 et imprimer à la fois au moment de Sime, il suffit de faire:

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

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

plustwo(34) 
+0

tnx pour la réponse. Mais je ne veux pas enchaîner la fonction, signifie faire un appel explicite à partir d'une fonction pour déclencher la fonction suivante – syam

+0

puis vous pouvez utiliser une liste et le faire fonctionner en utilisant une boucle for. comme @ononon Reinhart l'a mentionné – bob