小编Ram*_*hum的帖子

Python:如何在我的测试套件中制作临时文件?

(我正在使用Python 2.6和nose.)

我正在为我的Python应用程序编写测试.我想要一个测试打开一个新文件,关闭它,然后删除它.当然,我更喜欢这会发生在临时目录中,因为我不想丢弃用户的文件系统.而且,它需要跨OS.

我该怎么做?

python testing unit-testing temporary-files

25
推荐指数
4
解决办法
2万
查看次数

多处理还是多线程?

我正在制作一个用Python运行模拟的程序,带有一个wxPython接口.在程序中,您可以创建模拟,程序为您渲染(=计算)它.有时渲染可能非常耗时.

当用户启动模拟并定义初始状态时,我希望程序在后台连续渲染模拟,而用户可能在程序中执行不同的操作.有点类似于填充的YouTube风格的条形图:您可以仅在渲染点进行模拟.

我应该使用多个进程还是多个线程或者什么?人们告诉我使用这个multiprocessing软件包,我检查了它看起来不错,但我也听说过程序,不像线程,不能分享很多信息(我想我的程序需要分享很多信息.另外我还听说过Stackless Python:它是一个单独的选项吗?我不知道.

请指教.

python multithreading multicore multiprocessing python-stackless

24
推荐指数
6
解决办法
8796
查看次数

给定排列的词典编号,是否可以在O(1)中获取其中的任何项目

我想知道下面解释的任务是否在理论上是可行的,如果是这样,我怎么能做到.

给你一个N元素空间(即0和之间的所有数字N-1.)让我们看看那个空间上所有排列的空间,然后调用它S.可以标记的i第th个成员是带有词典编号的排列.SS[i]i

例如,如果N是3,那么S这个排列列表是:

S[0]: 0, 1, 2
S[1]: 0, 2, 1
S[2]: 1, 0, 2
S[3]: 1, 2, 0
S[4]: 2, 0, 1
S[5]: 2, 1, 0
Run Code Online (Sandbox Code Playgroud)

(当然,当看到一个大的时候N,这个空间变得非常大,N!确切地说.)

现在,我已经知道如何通过其索引号来获得排列i,并且我已经知道如何反转(得到给定排列的词典编号.)但我想要更好的东西.

一些排列本身可能很大.例如,如果你正在看N=10^20.(的大小S将是(10^20)!我相信这是我在一个堆栈溢出问题提起过的最大号:)

如果你只是在那个空间上看一个随机的排列,那么你将无法将整个东西存储在你的硬盘上,更不用说通过词典编号来计算每个项目了.我想要的是能够对该排列进行项目访问,并获得每个项目的索引.也就是说,给定Ni指定一个排列,有一个函数接受一个索引号并找到该索引中的数字,另一个函数接受一个数字并找到它所在的索引.我想这样做O(1),所以我不需要在排列中存储或迭代每个成员.

你说疯了吗?不可能?那可能.但请考虑一下:像AES这样的分组密码本质上是一种排列,它几乎完成了我上面概述的任务.AES具有16个字节的块大小,这意味着N256^16它是围绕10^38.(S重要的是,它的大小是一个惊人的(256^16)!,或者说是围绕着10^85070591730234615865843651857942052838 …

encryption algorithm permutation combinatorics number-theory

22
推荐指数
2
解决办法
1175
查看次数

将multiprocessing.Queue转储到列表中

我想把一个multiprocessing.Queue列入一个列表.为此,我编写了以下函数:

import Queue

def dump_queue(queue):
    """
    Empties all pending items in a queue and returns them in a list.
    """
    result = []

    # START DEBUG CODE
    initial_size = queue.qsize()
    print("Queue has %s items initially." % initial_size)
    # END DEBUG CODE

    while True:
        try:
            thing = queue.get(block=False)
            result.append(thing)
        except Queue.Empty:

            # START DEBUG CODE
            current_size = queue.qsize()
            total_size = current_size + len(result)
            print("Dumping complete:")
            if current_size == initial_size:
                print("No items were added to the queue.")
            else:
                print("%s items …
Run Code Online (Sandbox Code Playgroud)

python queue multiprocessing

21
推荐指数
2
解决办法
2万
查看次数

在Django开发期间提供静态媒体:为什么不MEDIA_ROOT?

我读了这篇关于在开发过程中使用Django提供静态媒体的指南.

我注意到了,MEDIA_URLMEDIA_ROOT没有在这里使用.为什么?有什么不同?

我试着做MEDIA_URLMEDIA_ROOT,并得到了奇怪的结果.

python django static-media

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

你能用数据发送图像:uri格式到GMail吗?

我正在Django制作一个Web应用程序,将用户的图像发送到他们的电子邮件中.

发送图像对我来说最吸引人的方式是数据:uri格式.

但是,我测试了发送此电子邮件的数据:uri图像到我的GMail帐户,电子邮件显示,但没有图像!

我知道Chrome和Firefox都可以打开数据:uri图像.所以这不是浏览器问题.但我没有看到数据:在GMail中的uri图像.

GMail不支持数据:uri图像?或者我可能发错了?

email gmail data-uri

21
推荐指数
2
解决办法
8476
查看次数

Python的`concurrent.futures`:根据完成顺序迭代期货

我想要类似的东西executor.map,除非我迭代结果,我想根据完成的顺序迭代它们,例如,首先完成的工作项应首先出现在迭代中,等等.这样迭代将是阻止iff序列中的每个工作项尚未完成.

我知道如何使用队列自己实现这个,但我想知道是否可以使用该futures框架.

(我主要使用基于线程的执行程序,所以我想要一个适用于这些的答案,但一般的答案也会受到欢迎.)

更新:谢谢你的答案!你能解释我怎么as_completedexecutor.map吗?executor.map在使用期货时,对我来说是最实用和最简洁的工具,我不愿意Future手动开始使用对象.

python multithreading future

21
推荐指数
1
解决办法
9119
查看次数

wxPython:手动调用事件

如何从我自己的代码手动调用特定事件?

python events user-interface wxpython

20
推荐指数
3
解决办法
2万
查看次数

我在哪里可以下载Django文档?

Django的网站看起来不错,但由于某种原因我无法找到下载文档的位置:

http://docs.djangoproject.com/en/1.1/

(是的,我需要1.1的文档)

有人知道吗?

python django documentation

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

Django i18n:翻译的常见原因没有出现

我正在制作一个多语言的Django网站.我创建了一个消息文件,填充并编译它.我用我想要的语言(希伯来语)检查了网站(在这种情况下是管理员),并且大多数短语都像希伯来语一样出现,但有些则没有.我检查了源代码,这些仍然显示为_('Whatever')他们应该,它们也被翻译在消息文件中,是的,我记得这样做compilemessages.

翻译的一些常见原因是什么?

python django translation gettext django-multilingual

20
推荐指数
6
解决办法
6260
查看次数