Orh*_*lak 9 python python-multiprocessing
我正在尝试解析包含汽车属性的网站(154种属性).我有一个巨大的列表(名称是 liste_test),包含280.000二手车公告网址.
def araba_cekici(liste_test,headers,engine):
for link in liste_test:
try:
page = requests.get(link, headers=headers)
.....
.....
Run Code Online (Sandbox Code Playgroud)
当我开始这样的代码时:
araba_cekici(liste_test,headers,engine)
Run Code Online (Sandbox Code Playgroud)
它起作用并获得结果.但大约在1小时内,我只能获得1500个URL的属性.它非常慢,我必须使用多处理.
我在这里找到了一个带有多处理的结果.然后我申请了我的代码,但不幸的是,它没有用.
import numpy as np
import multiprocessing as multi
def chunks(n, page_list):
"""Splits the list into n chunks"""
return np.array_split(page_list,n)
cpus = multi.cpu_count()
workers = []
page_bins = chunks(cpus, liste_test)
for cpu in range(cpus):
sys.stdout.write("CPU " + str(cpu) + "\n")
# Process that will send corresponding list of pages
# to the function perform_extraction
worker = multi.Process(name=str(cpu),
target=araba_cekici,
args=(page_bins[cpu],headers,engine))
worker.start()
workers.append(worker)
for worker in workers:
worker.join()
Run Code Online (Sandbox Code Playgroud)
它给出了:
TypeError: can't pickle _thread.RLock objects
Run Code Online (Sandbox Code Playgroud)
我发现了一些与此错误有关的回复.但它们都不起作用(至少我不能应用于我的代码).此外,我尝试了python多进程池,但不幸的是它停留在jupyter笔记本上,似乎这个代码无限运行.
| 归档时间: |
|
| 查看次数: |
1646 次 |
| 最近记录: |