2016-10-16 7 views
0

私はPythonとプログラミングの初心者です。マルチスレッドの作業をしようとしていますが、これまで管理していません。あらゆるヘルプやヒントに感謝します。バックグラウンドワーカーと他のスレッドとの基本的なスレッド化

from threading import Thread 
import time 
import requests 

class crawler: 

    def get_urls(self): 
     while True: 
      #r = self.s.get('http:\\someurl') 
      time.sleep(1) 
      print 'Thread 1' 

    def thread_test(self): 
     while True: 
      print 'Thread 2' 
      time.sleep(1) 

crawl = crawler() 

if __name__ == '__main__': 
    Thread(target=crawl.get_urls()).start() 
    Thread(target=crawl.thread_test()).start() 

答えて

1

私はPythonでスレッドプログラミングを行っているので、それはしばらくしているが、私はあなたが各スレッドに.join()を呼び出すためか、他のあなたのスポーンスレッドが実行する機会を得る前に、メインスレッドが終了する必要がありますことを思い出しました。

T1 = Thread(target=crawl.get_urls()).start() 
T2 = Thread(target=crawl.thread_test()).start() 
T1.join() 
T2.join() 

トリック

edit私はちょうど問題がtargetが呼び出し可能オブジェクトを期待していることであるパイソンにthreadingライブラリを見に行う必要があります。 target=crawl.get_urls()を呼び出すと、そのメソッドを渡すのではなくメソッドが評価されていました。

def get_urls(self): 
    while True: 
     #r = self.s.get('http:\\someurl') 
     time.sleep(1) 
     print 'Thread 1' 

def thread_test(self): 
    while True: 
     print 'Thread 2' 
     time.sleep(1) 

crawl = crawler() 

if __name__ == '__main__': 
    Thread(target=crawl.get_urls).start() 
    Thread(target=crawl.thread_test).start() 

は:ref:https://docs.python.org/3/library/threading.html#threading.Thread

+0

これはまだ動作しません

from threading import Thread 

インポート時 インポートが

クラスクローラを要求します。私はスレッド1からのみ出力を取得します。 – delica

+0

これを実行してからしばらくしていますが、私はあなたのコードを修正することができました。メソッド 'get_urls'は' Thread'に渡されるのではなく評価されていました。私は答えを更新しました。 –

+0

それでした!大変感謝しているアッバス。これは私にはあまりにも時間がかかりました。 – delica

関連する問題