如何解决将已编译的python 3.7正则表达式存储在数据库中
我正在使用AWS lambda在严酷的环境中执行一些文本挖掘任务。由于它是无服务器的,因此无法保持运行环境的运行,冷启动大约需要10分钟才能编译所有正则表达式。 因此,我很想在数据库中存储一堆(超过10k)序列化的已编译正则表达式,以便在需要时快速重用它们。 有人对我有任何指示吗?
类似的东西:
import psycopg2
import re
r=re.compile(r"\w+")
cursor.execute("update regex set compiled=%s where id=%s",(r,1))
“已编译”类型为bytea和
cursor.execute("select compiled from regex where id=%s",(1,))
r=cursor.fetchone()[0]
r.search("somestring")
解决方法
我相信您正在谈论将返回的对象存储在re.compile(r“ \ w +”)中。
您可以将字符串r“ \ w +”存储在DynamoDB之类的NoSQL数据库中,并使用re.compile检索字符串以对其进行编译。
赞:
cursor.execute("select compiled from regex where id=%s",(1,))
s=cursor.fetchone()[0]
r=re.compile(s)
r.search("somestring")
...
另一种选择是使用Python Pickle序列化对象,但是我认为不可能将其保存在Database中,并且您可以使用S3上传pickle结果文件并检索它。
使用Lambda热启动,您可以在需要时使用Pickle + S3将该对象保留在内存中,但第一次执行会产生高延迟。
,我认为解决方案不是在无效的情况下不使用无服务器架构。
Python似乎没有提供一种有效的方法来序列化已编译的正则表达式。您得到的就是重新编译它所需的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。