python3 urllib3和urllib_Python urllib3和代理

这篇博客建议使用requests替代urllib,因为requests更易于处理代理。文中介绍了如何利用多处理(而非多线程)进行URL列表的并行处理,通过将任务分配到多个进程中,每个进程独立写入数据库,实现数据的分布式处理。同时,提到了使用JoinableQueue进行进程间通信的可能性。
摘要由CSDN通过智能技术生成

首先,我建议避免像瘟疫一样使用urllib,而使用requests,它非常容易支持代理:http://docs.python-requests.org/en/latest/user/advanced/#proxies

其次,我没有将它用于多线程,而是用于多处理,这非常有效,您唯一需要弄清楚的是,您是否有一个动态队列或一个相当固定的列表,您可以将其分布在workers上,后者将URL列表均匀地分布在x个进程上:# *** prepare multi processing

nr_processes = 4

chunksize = int(math.ceil(total_nr_urls / float(nr_processes)))

procs = []

# *** start up processes

for i in range(nr_processes):

start_row = chunksize * i

end_row = min(chunksize * (i + 1), total_nr_store)

p = multiprocessing.Process(

target=url_loop,

args=(start_row, end_row, str(i), job_id_input))

procs.append(p)

p.start()

# *** Wait for all worker processes to finish

for p in procs:

p.join()

每个url_循环进程都会将自己的数据集写入数据库中的表中,因此我不必担心在python中将其连接在一起。在

但正如您所见,基本上这些特殊类型(Value&Array)支持进程之间的数据共享。

如果您转而寻找一个队列来执行类似循环的过程,那么可以使用JoinableQueue。

希望这有帮助!在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值