2017-09-12 9 views
1

辞書を更新して複数のスレッドを使用してリストを読み込もうとしているので、リストと辞書をスレッドのパラメータとして渡すか、グローバルキーワードを使用してスレッド。グローバル変数vs Pythonスレッドのパラメータ

ie。

mythread(): 
    global dict 
    global dict_semaphore 
    global list 
    global list_semaphore 

答えて

0

mythread(list, list_semaphore, dict, dict_semaphore) 

スレッディングだけの問題ではなく、parametersあなたの関数を使って、パラメータデータだけでなく、いくつかの特定のglobal変数のいずれか組み合わせのために動作します。あなたはそれぞれの機能を再定義する必要がありますglobals使用する場合

threading.Thread(target=foo, args = (lst1, lst_semaphore1, dct1, dct_semaphore1)) 
threading.Thread(target=foo, args = (lst2, lst_semaphore2, dct1, dct_semaphore1)) 
threading.Thread(target=foo, args = (lst2, lst_semaphore2, dct2, dct_semaphore2)) 

:あなたは任意のリストや辞書でそのdoind任意のスレッドをスパムすることができます

def foo(lst, lst_semaphore, dct, dct_semaphore): 
    do_some_nice_stuff() 

は、あなたがこれを持っているとしましょう組み合わせ:

def foo(): 
    global lst1 
    global lst_semaphore1 
    global dct1 
    global dct_semaphore1 
    do_nice_stuff() 
... 
def foo2(): 
    global lst2 
    global lst_semaphore2 
    global dct2 
    global dct_semaphore2 
    do_nice_stuff() 


threading.Thread(target=foo) 
threading.Thread(target=foo1) 
threading.Thread(target=foo2) 

したがって、パラメータを使用すると、コードが再利用されるようになりますほとんど常に。

関連する問題