2011-02-01 42 views
3

私はリストを持っています。マルチスレッドでPythonを使ったダウンロードループ

symbols = ('GGP', 'JPM', 'AIG', 'AMZN','GGP', 'rx', 'jnj', 'osip') 

URL = "http://www.Xxxx_symbol=%s" 

def fetch(symbols): 
    try: 
     url = URL % '+'.join(symbols) 
     fp = urllib2.urlopen(url) 
     try: 
      data = fp.read() 

     finally: 
      fp.close() 
     return data 
    except Exception as e: 
     print "No Internet Access" 

私はツイスト使用マルチプロセス、プロセスのないフェッチしていない(4つのスレッドで)マルチスレッドしようとしています。 Url fetchの出力ファイルは、削除したい7行のヘッダ情報を持つcsvです。私はそれ自身のファイル内の各シンボルをループしたいと思います。私は前にこのフェッチコードを使用しました。私は1つの要素を持つシンボルリストを得ることができます。

答えて

4

これは、あなたが始める必要があります。

from threading import Thread, Lock 

data = {} 
data_lock = Lock() 

class Fetcher(Thread): 
    def __init__(self, symbol): 
     super(Thread, self).__init__() 
     Thread.__init__(self) 
     self.symbol = symbol 

    def run(self): 
     # put the code from fetch() here 
     # replace 'data = fp.read()' with the following 
     tmp = fp.read() 
     data_lock.acquire() 
     data[self.symbol] = tmp 
     data_lock.release() 

# Start a new Fetcher thread like this: 
fetcher = Fetcher(symbol) 
fetcher.start() 
# To wait for the thread to finish, use Thread.join(): 
fetcher.join() 
関連する問題