- 46
- 0
global total
try:
html = etree.HTML(item)
result = html.xpath('//div[contains(@id,"qiushi_tag")]')
for site in result:
try:
imgUrl = site.xpath('.//img/@src')[0]
title = site.xpath('.//h2')[0].text
content = site.xpath('.//div[@class="content"]/span')[0].text.strip()
vote = None
comments = None
try:
vote = site.xpath('.//i')[0].text
comments = site.xpath('.//i')[1].text
except:
pass
result = {
'imgUrl': imgUrl,
'title': title,
'content': content,
'vote': vote,
'comments': comments,
}
with self.lock:
# print 'write %s' % json.dumps(result)
self.f.write(json.dumps(result, ensure_ascii=False).encode('utf-8') + "\n")
except Exception, e:
print 'site in result', e
except Exception, e:
print 'parse_data', e
with self.lock:
total += 1
这里用了两次的with lock 第一个是加锁,防止竞争写资源,但是第二个为啥又是with lock 这两个啥关系?
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
许我一个天亮 普通会员 1楼
在Python中,
with lock是一个高级同步原语,用于确保代码在访问共享资源时具有原子性。当with语句块被块内代码块引用时,lock会自动调用该代码块内部的锁函数,以确保共享资源的访问是线程安全的。with lock的基本语法如下:python with lock资源_name: # 使用资源在这个例子中,
resource_name是你想要保护的共享资源的名称。with lock语句块会自动获取并使用resource_name的锁。如果在代码块内部没有调用lock函数,那么共享资源将在with lock语句块结束时被释放。需要注意的是,
with lock语句块的内部代码块必须调用lock函数来获取锁。如果没有调用lock函数,那么锁将在with lock语句块结束时被自动释放,这意味着共享资源将被多个线程同时访问,可能会导致数据不一致。此外,
with lock语句块的使用也可以避免由于锁同步带来的性能开销。如果你的共享资源是一个CPU密集型任务,那么你可以使用with lock语句块来自动锁定共享资源,从而避免在共享资源上进行不必要的同步操作。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

