2013-03-17 37 views
8

Şu anda iş parçacığının python'da nasıl çalıştığını anlamaya çalışıyorum.Python: İş parçacığı içinde işlev işlevi current_thread değiştirmez()

def func1(arg1, arg2): 

    print current_thread() 
    .... 

class class1: 

    def __init__(): 
     .... 

    def func_call(): 
     print current_thread() 
     t1 = threading.Thread(func1(arg1, arg2)) 
     t1.start() 
     t1.join() 

Ne fark hem baskılar çıktı aynı şeyi o:

Aşağıdaki kod var. Konu neden değişmiyor?

cevap

17

İletmek yerine işlevi yürütüyorsunuz. Bunun yerine bu deneyin: Bu Thread yapıcı verilir önce işlevini aradığınız

t1 = threading.Thread(target = func1, args = (arg1, arg2)) 
+0

, çok teşekkür ederim! –

5

. Ayrıca, bunu yanlış argüman olarak veriyorsunuz (Thread kurucusunun ilk konumsal argümanı group'dur). func1 öğesinin None döndürdüğü varsayımı yaptığınız şey, threading.Thread(None) veya threading.Thread() numaralı telefonlara eşdeğerdir. Bu, threading docs'da daha ayrıntılı olarak açıklanmıştır.

kodunuzu çalışmaları bu deneyin yapmak için: İşe yaradı

t1 = threading.Thread(target=func1, args=(arg1, arg2)) 
t1.start() 
t1.join() 
İlgili konular