前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >def函数里面什么时候可以用ensure_future ?

def函数里面什么时候可以用ensure_future ?

作者头像
青南
发布2021-12-27 15:14:20
1.1K0
发布2021-12-27 15:14:20
举报
文章被收录于专栏:未闻Code未闻Code
一、问题解答

1

Python的虚拟环境其实就是把一部分内容独立出来,安装依赖包而不影响其它,有效地避免不兼容问题。如果是在虚拟环境下运行某病毒,它把我的某些东东删了,即使退出虚拟环境,删了就是删了,无法还原了。病毒的杀伤力大概率只能删文件,其余不构成影响。我这样理解,没错吧?

python的虚拟环境跟虚拟机不一样,它用的就是你电脑上的真实文件。它的原理就是python读取包的优先级顺序。你看我在星球分享的视频。

2

星主,我今天给群友分享个小发现 通过隧道代理实现selenium不重启切换ip :“Http隧道代码样例 - 文档中心 - 快代理”打开链接,耐心看就能找到。

点击空白处查看答案

这种方法有弊端。每个请求的ip都不一样。有时候我们需要让ip在一段时间内保持一致,按需更换。

3

群主,第2行代码太长了,参考你的《一日一技:在 Python 中小括号的另类用法》还是报错了,即使去掉后面的逗号,也是报同样的错。

代码语言:javascript
复制
import json

str1=('{"result":[{"cn":"256","displayName":"256 \u4e0a\u6d77(\u53c8\u4e00\u57ce)\u5e97","givenName":"\u5468\u751f\u751f\u4e0a\u6d77\u53c8\u4e00\u57ce\u5e97","telephoneNumber":["+86 21 6548 1910"]}]}')

str2=json.loads(str1)

print(str2)

每一行都应该有完整的引号。你每一行最右边的引号漏掉了

4

为什么import ctypes,如果文件名命名为ctypes会报错?

你知不知道Python的import倒入模块的功能可以用来做单例模式?一日一技:Python 下面最简单的单例模式写法

5

南哥,请教一个openvpn的问题,想把本地电脑和服务器组成局域网,在服务器上启动了一个 openvpn 服务,本地电脑作为 openvpn客户端进行连接。通过 vpn分配地址可以 ping 通服务器,但是通过该地址访问 服务器上服务时,可以看到有请求进入,无响应内容

不太清楚,但我感觉是客户端有问题

6

南哥,我在抓app包的时候,发现被tex标签包裹的数据是这样的:

代码语言:javascript
复制
[tex=2.571x1.286]32y9xwEcqsM9FjY9uB33CA==[/tex]

它在APP端显示的是图片,我起初以为是图片的base64,试了试似乎不对,然后尝试了几个在线的latex编辑网站,也不能像APP端那样展示图片。我的疑问:1.这是什么格式的数据?2.我如何做才能把这种数据像APP端一样展示出来呢(数据需要保存到word)?

完整数据如下:

代码语言:javascript
复制
content=[p]患者,男,32岁,持续发热1周,[tex=2.571x1.286]32y9xwEcqsM9FjY9uB33CA==[/tex]左右,[tex=1.786x1.286]KBJpRKfedxb3LzbS7tkLpQ==[/tex]次/分,表情淡漠、食欲不振、腹胀,肝大肋下5cm,轻度压痛,脾未触及。血常规[tex=7.5x1.286]zdOqpwhsJariPONWXQup3IZGzfokc79tD5vHTjyXU6s=[/tex],[tex=4.429x1.286]Lh5msTUDa+iu+cS3un+clw==[/tex],[tex=7.357x1.286]QkzMj4y6dti5TV28jS+zaZdGsIr/wo7j0jp5D+S1tSU=[/tex],肥达反应阳性。为进一步明确诊断,该患者首选的辅助检查为[u]   [/u]。[/p]

直接base64解码以后应该是一个id,app拿到这个id以后,拼接一个新的URL去拿公式图片。你在抓包工具里面全局搜索这个字符串。

二、经验交流

南哥,请问一下为什么我这个代码,只有第一个首页抓取成功,然后第二个url就不会爬取了,看输出结果爬取第二个链接直接在session.get就结束了没报错信息啥都没有。这是什么问题呢?

第34行返回的这个more_page可能是None,因为在第18行,在status_code不是200的时候你没有处理。

上面抓取网页那里,status_code不是200的时候,刚加了打印状态码。现在执行第二个url的时候,也没打印状态码出来就结束了。怀疑是session.get那里await出去就没有回来了

await会等待它回来再执行下一句的,你用pycharm开调试模式单步跟踪看看。另外可以把try … except去掉,乱用try是非常糟糕的习惯。

我刚刚debug跟踪看了,在执行第二个url爬取的时候,代码会执行到cancel协程那里去。感觉是协程写法不对?

46行,前面加个await,改成await asyncio.ensure_future

这样可以了,为什么需要在这里加await?

因为ensure_future是非阻塞的,代码在这一行不会停留,会继续运行后面的内容。但由于后面程序直接就结束了,所以他再也跑不完了。这个地方,其实你去掉ensure_future,直接await那个函数就可以了。

这个ensure_future,在def函数里面什么时候可以用,什么时候可以不用?对ensure_future的用法一直都不太清楚

我做的直播讲过它,在星球的历史记录里面可以找到。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档