多处理环境中成员资格测试的数据类型

2024-03-28 09:50:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个网络爬虫和我使用多处理,下载和处理四个网页在同一时间。但当然,我不打算在同一页上爬行不止一次。你知道吗

在实现多处理之前,我使用集合来维护一个cralwled url集合,我选择集合,因为它们非常适合于成员资格测试。我是这么想的多处理管理器可以帮助我实现四个进程之间的共享集。但事实并非如此。你知道吗

我想做的是

manager = Manager()
d = manager.set()

但是Manager类中不存在这样的函数。你知道吗

有没有人知道如何解决,或者我的问题的解决方法?你知道吗


Tags: 方法函数网络url网页管理器进程manager
2条回答

multiprocessing确实有一个dict()的实现,它应该是set()的函数替换,用于成员资格测试。你知道吗

只需使用这些键来存储要进行成员资格查找的URL,并在值中存储所需的内容:

d = manager.dict()

# Store some values
d['http://dr.dk'] = 1
d['http://stackoverflow.com'] = 1

# Do membership lookup
if 'http://stackoverflow.com' in d:
    print "We have visited Stack Overflow"

if 'http://google.com' not in d:
    print "We have not visited Google"

或者使用列表作为访问网站的基本存储。 1) 锁定 2) 检查数组是否有值 3) 如果未访问,则添加url 4) 解锁

或者创建另一个进程,在那里你将有正常设置,你可以把你的网址。 任何需要检查网站是否被访问的进程都只需通过队列或管道与该进程对话。你知道吗

相关问题 更多 >