擅长:python、mysql、java
<p>如果您的任务是“我有一个静态文本文件,并且存在询问该文本文件是否包含特定IP地址的动态查询”,则只需将该文件读入内存一次,然后在查询进入时处理查询</p>
<pre class="lang-py prettyprint-override"><code>with open('/home/socfw/src/edl/outbound_monthly.txt') as ipaddresses:
ip = set(line.strip() for line in ipaddresses)
while True: # notice how a boolean is the idiomatic way to express an endless loop
queryip = somehow receive a query from a client()
if queryip in ip:
tell client yes()
else:
tell client no()
</code></pre>
<p>如果您的客户机是web浏览器或web API的使用者,那么<code>while</code>循环中的伪代码可能会被替换为Flask路由或其他内容;但这种通用模式几乎适用于任何类型的服务器</p>
<p>没有任何明显的方法可以提高将文本读入内存的效率——如果您能够实现100%的CPU,那么这对您很有好处,因为这种任务通常是I/O限制的,而不是CPU限制的</p>
<p>如果文本文件不是静态的,也许您可以定期将其重新读取到内存中,或者只要在更新时将其导入数据库,让客户机查询即可</p>