![](/img/trans.png)
[英]Python Multiprocessing of NLTK word_tokenizer - function never completes
[英]Multiprocessing with Python, Execution never completes
多處理新手! 請幫忙。
所有庫都已導入,get_links方法有效,我已經在一個案例中對其進行了測試。 嘗試使該方法針對指定給並行進程的多個URL運行,以使其更快。 沒有多處理,我的運行時間是10個小時以上
編輯2:
在MCVE上盡我所能
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
from multiprocessing import Pool
options = Options()
options.headless = True
options.binary_location = 'C:\\Users\\Liam\\AppData\\Local\\Google\\Chrome SxS\\Application\\Chrome.exe'
options.add_argument('--blink-settings=imagesEnabled=false')
options.add_argument('--no-sandbox')
options.add_argument("--proxy-server='direct://'")
options.add_argument("--proxy-bypass-list=*")
subsubarea_urls = []
with open('subsubarea_urls.txt') as f:
for item in f:
item = item.strip()
subsubarea_urls.append(item)
test_urls = subsubarea_urls[:3]
def get_links(url):
driver = webdriver.Chrome('....\Chromedriver', chrome_options=options)
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
link = soup.find(class_ = 'listings__all')
if link is not None:
link = "example.com" + link.find('a')['href']
driver.close()
return link
def main():
how_many = 3
p = Pool(processes = how_many)
data = p.map(get_links, test_urls)
p.close()
with open('test_urls.txt', 'w') as f:
f.write(str(data))
if __name__ == '__main__':
main()
出乎意料的是,問題與代碼無關。 python中的多處理似乎並不像Windows GUI那樣,Pool調用的子進程沒有std流。 該代碼需要在IDLE python -m idlelib.idle中執行(要打開IDLE)
在這里查看Terry Jan Reedy的答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.