【发布时间】:2023-04-05 17:59:02
【问题描述】:
我正在尝试使用一个共享列表来更新从 Selenium 抓取的信息,以便我以后可以导出此信息或按照我的选择使用它。出于某种原因,它给了我这个错误:
NameError: name 'scrapedinfo' is not defined...
这对我来说真的很奇怪,因为我声明了全局列表并且我使用了 multiprocessing.Manager() 来创建列表。我已经多次检查了我的代码,这不是区分大小写的错误。我还尝试通过函数将列表作为变量传递,但这会产生其他问题并且不起作用。任何帮助是极大的赞赏!
from selenium import webdriver
from multiprocessing import Pool
def browser():
driver = webdriver.Chrome()
return driver
def test_func(link):
driver = browser()
driver.get(link)
def scrape_stuff(driver):
#Scrape things
scrapedinfo.append(#Scraped Stuff)
def multip():
manager = Manager()
#Declare list here
global scrapedinfo
scrapedinfo = manager.list()
links = ["https://stackoverflow.com/", "https://signup.microsoft.com/", "www.example.com"]
chunks = [links[i::3] for i in range(3)]
pool = Pool(processes=3)
pool.map(test_func, chunks)
print(scrapedinfo)
multip()
【问题讨论】:
-
您使用的是 Windows 还是 linux?尝试将调用
multip()
放在if __name__ == "__main__":
块中,以避免子进程中的重新导入问题。 -
它在 if__name__ 中......我只是没有添加它,因为我的代码就像 3000 行兄弟。我正在使用 Windows 顺便说一句
标签:
python
list
python-multiprocessing
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 多处理管理器 – 列表名称错误? - Python技术站