2011-02-01 2 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 - csv с 7 строками информации заголовка, от которых я хочу избавиться. Я хотел бы зациклировать каждый символ в собственном файле. Раньше я использовал этот код. Я могу получить список символов, который имеет один элемент.

ответ

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() 
Смежные вопросы