2016-10-04 9 views
0

twitterbotライブラリで定義された複数の関数を実行しようとしています。ある関数を実行し、次の関数を実行し、次に次の関数を実行するコード、またはランダムな順序でコードを実行する必要があります。ただし、この関数はループで実行されるように設計されています。次の関数の実行を強制する方法

私は実際のライブラリの編集から離れているので、関数を一度実行してから次のループを続け、上からループするソリューションを探しています。

これを行う方法はPythonにありますか?

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

ごめんなさい、私はあなたが実行したい正確に理解していません、どのくらいの頻度で、どのような順序で、 – orlp

+0

@orlp周波数用のバッファを設定していますので、関数の実行を制限して、 "ATSO"の次の関数も実行されるようにしたいと思います。現在(at)ascoは、次の関数を実行せずに何度も繰り返しループします。 –

+0

質問を編集する前に回答を書きました。 「上記の機能は継続しないで走り続ける」とはどういう意味ですか?それは何が起こっているのか、それともあなたがしたいことなのでしょうか? –

答えて

1

リスト内の関数への参照を使用して、random.shuffleを使用できます。 threading.Threadを使用すると、すべての機能を実行できます。私はforループが終了していない場合であっても、各スレッドが実行されている方法を説明するための単なる一例としてtime.sleepforを使用しています:

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 
関連する問題