2016-10-04 1 views
0

Ich versuche, mehrere Funktionen auszuführen, die von der Twitterbot-Bibliothek definiert sind. Ich brauche den Code, um eine Funktion auszuführen, dann die nächste und dann die nächste oder in zufälliger Reihenfolge. Die Funktion ist jedoch so ausgelegt, dass sie in einer Schleife läuft.Wie erzwinge Ausführung der nächsten Funktion

Ich bleibe lieber weg von der Bearbeitung der eigentlichen Bibliothek, also suche ich nach einer Lösung, die es mir erlaubt, die Funktion nur einmal auszuführen, weiter zum nächsten und von oben nach unten.

Gibt es einen Weg in Python, dies zu tun?

from TwitterFollowBot import TwitterBot 

my_bot = TwitterBot() 
my_bot.sync_follows() 

# Start of loop 

my_bot.auto_fav("@asco", count=1000) 
# The above function persists to execute without continuing down 
# Need bottom functions to also execute. 
my_bot.auto_fav("ATSO", count=1000) 
my_bot.auto_fav("BCY3", count=1000) 
my_bot.auto_fav("ESIO", count=1000) 

# End of loop 
+0

Es tut mir leid, ich verstehe nicht, was genau Sie ausführen möchten wie oft und in welcher Reihenfolge. – orlp

+0

@orlp Ich habe einen Puffer für die Frequenz eingerichtet, also möchte ich nur die Ausführung der Funktion einschränken, damit auch die nächste Funktion mit "ATSO" ausgeführt wird. Currently (at) asco läuft immer und immer wieder ohne die nächste Funktion auszuführen. –

+0

Ich habe eine Antwort geschrieben, bevor Sie Ihre Frage bearbeitet haben. Was meinst du mit "obige Funktion bleibt bestehen, ohne weiter runter zu gehen". Ist das, was passiert oder ist es das, was Sie wollen? –

Antwort

1

Sie können den Verweis auf die Funktionen in einer Liste verwenden dann random.shuffle verwenden. Und Sie können threading.Thread verwenden, um alle Ihre Funktionen auszuführen. Ich verwende time.sleep und for nur als ein Beispiel zu veranschaulichen, wie jeder Thread selbst gerade ausgeführt wird, obwohl die for Schleife nicht beendet ist:

import random 
import time 
from threading import Thread 

def a(): 
    for i in range(10000): 
     print(i) 
     time.sleep(1) 
def b(): 
    for i in range(10000): 
     print(i) 
     time.sleep(2) 
def c(): 
    for i in range(10000): 
     print(i) 
     time.sleep(3) 
def d(): 
    for i in range(10000): 
     print(i) 
     time.sleep(4) 
def e(): 
    for i in range(10000): 
     print(i) 
     time.sleep(5) 

listOfFunctions = [a, b, c, d, e] 
random.shuffle(listOfFunctions) 


for i in listOfFunctions: 
    Thread(target = i).start() # Use args=(your args) if you want to run each function with arguments 
Verwandte Themen