Многопоточный цикл загрузки с питоном - PullRequest
3 голосов
/ 01 февраля 2011

У меня есть список.

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

1 Ответ

4 голосов
/ 01 февраля 2011

Это должно помочь вам начать:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...