我正在为学习python编写程序。 这是gui网络爬虫。 我使用QThread成功完成多工作GUI和主类 但我有一个问题。 在主类中,请首先使用WebDriver获取图片地址,然后创建一个名为data的列表。 之后,使用pool()和map()开始使用Main类中的download_image方法下载图片。
我搜索并尝试了许多东西。 imap和lambda等。
这是我的代码 (我将多进程导入为mul) (我的python版本是3.7)
# crawler and downloader class
class Main(QThread, QObject):
def __init__(self, path, brand, model, grade):
QThread.__init__(self)
self.path = path
# this is download method
def download_image(self, var):
a = var.split("/")
filename = a[-1]
download_path = self.path + filename
urllib.request.urlretreieve(var, download_path)
# this is start method when button clicked in Gui
def core(self):
#sample url data list
data = ['url.com', 'url2.com', 'url3.com', ...]
download_p = Pool(mul.cpu_count())
download_p.map(self.download_image, data)
download_p.close()
download_p.join()
print("end")
def run(self):
self.core()
class Gui(QMainWindow, design.Ui_MainWindow):
def __init__(self):
(and gui code here)
如果我设置了download_p.map(self.download_image,数据) 我收到此错误-> [TypeError:无法腌制主要对象]
如果我设置了download_p.map(self.download_image,self.data) (并设置self.data = [urls ...]) 我得到相同的TypeError
如果我设置了download_p.map(self.download_image,self,data) 我收到此错误-> [TypeError:'Main'对象不可迭代
我也不擅长英语和Python 但是我想解决这个问题,所以我决定在这里问 非常感谢您查看这个新手的问题...