我正在寻找一个函数来使列表尽可能不排序。最好用Python。
背景故事:
我想检查 URL 状态并查看 URL 是否给出 404。我只使用asyncio和requests模块。没有什么花哨。
现在我不想让服务器超载,所以我想尽量减少同时检查同一域上的 URL。我的想法是对 URL 进行排序,使列表中彼此接近的项目(具有相同的排序键 = 域名)尽可能远离彼此。
带有数字的示例:
a=[1,1,2,3,3] # <== sorted list, sortness score = 2
0,1,2,3,4 # <== positions
Run Code Online (Sandbox Code Playgroud)
可以未排序为:
b=[1,3,2,1,3] # <== unsorted list, sortness score = 6
0,1,2,3,4 # <== positions
Run Code Online (Sandbox Code Playgroud)
我想说,我们可以通过对相等项(具有相同的键 = 域名)之间的距离求和来计算排序分数。较高的排序意味着更好的未排序。也许有更好的方法来测试不排序。
列表的排序得分为a2。1 的距离总和为 (1-0)=1,2 的距离总和为 0,3 的距离总和为 (4-3)=1。
列表的排序得分为b6。1 的距离总和为 (3-0)=3,2 的距离总和为 0,3 的距离总和为 (4-1)=3。
URL 列表看起来像(域,URL)元组列表:
[
('example.com', 'http://example.com/404'),
('test.com', 'http://test.com/404'),
('test.com', 'http://test.com/405'),
('example.com', 'http://example.com/405'),
...
] …Run Code Online (Sandbox Code Playgroud) 有没有办法减慢浏览器DOM渲染和JS执行开发,所以我们可以看到网站的哪些部分太JS密集,在较慢的机器上可能会慢?也许Chrome/Firefox for Linux/OSX的扩展?
一些澄清:
这不是关于连接或测试浏览器的速度!只有我们的开发人员才能看到页面的哪些部分被缓慢渲染或者是"小故障".例如,当您使用ajax并且正在加载某些东西时,您会显示一个加载器,但是在显示加载器之后,也会显示加载的部分.我们希望以慢动作看到它.就像在做Expose时在OSX中按SHIFT一样.
PS.我确实找到了一些关于延迟互联网连接的文章,但在这种情况下这还不够.
PPS.加载虚拟机中的所有内容对我们无效.
购买力平价.在我看来,使用Javascript代码中提出的慢速代码使我的浏览器变慢并不是最好的选择.
我有一个Python2.7应用程序,它使用了大量dict包含键和值字符串的对象.
有时这些dicts和字符串不再需要了,我想从记忆中删除那些.
我尝试不同的东西,del dict[key],del dict,等,但应用程序仍然使用相同的内存量.
下面是一个我希望收取内存的例子.但它没有:(
import gc
import resource
def mem():
print('Memory usage : % 2.2f MB' % round(
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024.0/1024.0,1)
)
mem()
print('...creating list of dicts...')
n = 10000
l = []
for i in xrange(n):
a = 1000*'a'
b = 1000*'b'
l.append({ 'a' : a, 'b' : b })
mem()
print('...deleting list items...')
for i in xrange(n):
l.pop(0)
mem()
print('GC collected objects : %d' % gc.collect())
mem()
Run Code Online (Sandbox Code Playgroud)
输出:
Memory usage : 4.30 …Run Code Online (Sandbox Code Playgroud) python memory garbage-collection memory-management python-2.7
我正在使用argparse模块来设置我的命令行选项.我也在dict我的应用程序中使用a 作为配置.简单的键/值存储.
我正在寻找的是使用命令行参数覆盖JSON选项的可能性,而无需事先定义所有可能的参数.类似的东西--conf-key-1 value1 --conf-key-2 value2,它会创建一个字典{'key_1': 'value1','key_2': 'value2'}(参数中的' - '在字典中被'_'替换).然后我可以将这个dict与我的JSON配置(dict)结合起来.
所以基本上我想定义--conf-*为一个参数,哪里*可以是任何键,后面会是什么value.
我确实找到了configargparse模块,但据我所知,我从一个dict已经使用过的开始.
我有什么想法可以解决这个问题?
我们使用dict包含大约4GB数据的数据进行处理.它方便快捷.
我们遇到的问题是这dict可能超过32GB.
我正在寻找一种方法来使用dict(就像变量与get() - 方法等),它可能比可用内存大.如果dict以某种方式将数据存储在磁盘上并在get(key)调用时从磁盘检索数据并且该值key不在内存中,那将是很好的.
我最好不想使用外部服务,比如SQL数据库.
我确实找到了Shelve,但它似乎也需要记忆.
关于如何解决这个问题的任何想法?
我正在寻找一个包含 ASCII 字符和相同外观的 UTF8 字符的表。我知道这也取决于字体是否看起来相同,但从通用开始就足够了。
>>> # PY3 code:
>>> a='H' # ascii
>>> b='?' # utf8
>>> a==b
False
>>> ' '.join(format(ord(x), 'b') for x in a)
'1001000'
>>> ' '.join(format(ord(x), 'b') for x in b)
'10000011101'
>>> a='P' # ascii
>>> b='?' # utf8
>>> a==b
False
>>> ' '.join(format(ord(x), 'b') for x in a)
'1010000'
>>> ' '.join(format(ord(x), 'b') for x in b)
'1110100001'
Run Code Online (Sandbox Code Playgroud) python ×4
memory ×2
algorithm ×1
argparse ×1
ascii ×1
dictionary ×1
html ×1
javascript ×1
python-2.7 ×1
sorting ×1
utf-8 ×1