小编ddo*_*org的帖子

使列表尽可能不排序的函数

我正在寻找一个函数来使列表尽可能不排序。最好用Python。

背景故事:

我想检查 URL 状态并查看 URL 是否给出 404。我只使用asynciorequests模块。没有什么花哨。

现在我不想让服务器超载,所以我想尽量减少同时检查同一域上的 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)

python sorting algorithm

59
推荐指数
4
解决办法
4022
查看次数

减慢浏览器渲染速度

有没有办法减慢浏览器DOM渲染和JS执行开发,所以我们可以看到网站的哪些部分太JS密集,在较慢的机器上可能会慢?也许Chrome/Firefox for Linux/OSX的扩展?

一些澄清:

这不是关于连接或测试浏览器的速度!只有我们的开发人员才能看到页面的哪些部分被缓慢渲染或者是"小故障".例如,当您使用ajax并且正在加载某些东西时,您会显示一个加载器,但是在显示加载器之后,也会显示加载的部分.我们希望以慢动作看到它.就像在做Expose时在OSX中按SHIFT一样.

PS.我确实找到了一些关于延迟互联网连接的文章,但在这种情况下这还不够.

PPS.加载虚拟机中的所有内容对我们无效.

购买力平价.在我看来,使用Javascript代码中提出的慢速代码使我的浏览器变慢并不是最好的选择.

html javascript google-chrome performance-testing

11
推荐指数
2
解决办法
7753
查看次数

在Python中强制垃圾收集以释放内存

我有一个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

7
推荐指数
1
解决办法
1万
查看次数

使用argparse(python)创建变量键/值对

我正在使用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已经使用过的开始.

我有什么想法可以解决这个问题?

python configuration argparse

6
推荐指数
4
解决办法
5653
查看次数

如何在Python中使用不适合内存的大型dicts?

我们使用dict包含大约4GB数据的数据进行处理.它方便快捷.

我们遇到的问题是这dict可能超过32GB.

我正在寻找一种方法来使用dict(就像变量与get() - 方法等),它可能比可用内存大.如果dict以某种方式将数据存储在磁盘上并在get(key)调用时从磁盘检索数据并且该值key不在内存中,那将是很好的.

我最好不想使用外部服务,比如SQL数据库.

我确实找到了Shelve,但它似乎也需要记忆.

关于如何解决这个问题的任何想法?

python memory dictionary data-structures

5
推荐指数
1
解决办法
2235
查看次数

用于 ASCII 的类似 UTF8 字符

我正在寻找一个包含 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)

ascii utf-8 non-ascii-characters extended-ascii

5
推荐指数
1
解决办法
6735
查看次数