Возникнет ли состояние гонки при многопоточности скрипта, получающего исходный код с веб-сайта?[ПИТОН] - PullRequest
0 голосов
/ 29 декабря 2018

Допустим, я хотел бы собрать данные с веб-сайта для этого биржевого кода, используя urllib:

> sourceURL =
> urllib.request.urlopen("http://www.aastocks.com/tc/stocks/quote/quick-quote.aspx?symbol=00001")

И я бы использовал Beautifulsoup, чтобы получить данные из sourceURL, поскольку у меня есть списокиз акций будет делать ту же работу, поэтому я намерен использовать многопоточность для ускорения процесса.

Однако я слышал, что многопоточность может вызвать состояние гонки, поэтому в этом случае мне нужно применить блокировку какfollow:

lock.acquire()
sourceURL = urllib.request.urlopen("http://www.aastocks.com/en/stocks/analysis/company-fundamental/basic-information?symbol=00001").read()
lock.release()

Насколько я знаю, этот метод urlopen процесса занимает больше всего времени в моем скрипте, было бы бессмысленно применять поток, если блокировка действительно необходима, чтобы избежать повреждения данных в sourceURL или егона самом деле не нужен, так как сама функция urlopen не имеет никаких переменных, а просто получает весь исходный код в sourceURL?

Кроме того, в качестве части сайта я использовал для поиска его селен chromedriver, который занимаетеще больше времени, необходима ли блокировка?

    url = 'http://www.aastocks.com/en/stocks/quote/detail-quote.aspx?symbol=00001'
    browser.get(url) 
    browser.find_element_by_xpath('//*[@id="sb2-btnSubmit"]').click()
    source = browser.execute_script("return document.body.innerHTML")

Является ли urllib или urllib3, селеновый веб-драйвер безопасным для потоков?

...