小编acr*_*bia的帖子

扭曲:使代码无阻塞

我对如何在python/twisted中编写异步代码感到有点困惑.假设(为了论证)我向世界公开一个函数,它接受一个数字并返回True/False,如果它是素数/非素数,所以它看起来像这样模糊:


def IsPrime(numberin):
    for n in range(2,numberin):
        if numberin % n == 0: return(False)
    return(True)
Run Code Online (Sandbox Code Playgroud)

(只是为了说明).

现在假设有一个网络服务器需要根据提交的值调用IsPrime.这需要很长时间才能完成numberin.

如果同时另一个用户请求一个小数的素数,有没有办法使用reactor/deferreds架构异步运行两个函数调用,以便在长计算结果之前返回短计算结果?

我知道如果IsPrime功能来自我的网络服务器将执行延迟的getPage的其他一些网络服务器,该怎么做呢,但如果它只是一个本地功能呢?

即,可以在两次调用IsPrime之间以某种方式进行Twisted时间共享,还是需要显式调用新线程?

或者,IsPrime循环是否需要分成一系列较小的循环,以便控制可以快速传递回反应堆?

或者是其他东西?

python asynchronous twisted blocking

19
推荐指数
1
解决办法
6457
查看次数

如何在pytables/hdf5中存储宽表

我有来自csv的数据,它有几千列和一万(左右)行.在每列中,数据具有相同的类型,但不同的列具有不同类型的数据*.以前我一直在从numpy和磁盘上存储数据,但它很慢,特别是因为通常我想加载一些列的子集而不是所有列.

我想使用pytables将数据放入hdf5,我的第一种方法是将数据放在一个表中,每个csv列有一个hdf5列.不幸的是,这不起作用,我假设因为512(软)列限制.

存储此数据的合理方法是什么?

*我的意思是,从文本转换后的数据类型.

python numpy hdf5 pytables

11
推荐指数
1
解决办法
1817
查看次数

Python中嵌套数据结构中的舍入小数

我有一个程序来处理嵌套数据结构,其中底层类型通常最终为小数.例如

x={'a':[1.05600000001,2.34581736481,[1.1111111112,9.999990111111]],...}
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的pythonic方法来打印这样的变量,但将所有浮点数舍入到(例如)3dp并且不假设列表和字典的特定配置?例如

{'a':[1.056,2.346,[1.111,10.000],...}
Run Code Online (Sandbox Code Playgroud)

我想的是 pformat(x,round=3)或许也许

pformat(x,conversions={'float':lambda x: "%.3g" % x})
Run Code Online (Sandbox Code Playgroud)

除了我不认为他们有这种功能.永久舍入基础数据当然不是一种选择.

python printing rounding string-formatting

9
推荐指数
1
解决办法
501
查看次数

您可以使用 self.assertRaises 作为异步上下文管理器吗?

我想测试 python 3 coro 是否因特定异常而失败,但似乎没有实现此功能。

async with self.assertRaises(TestExceptionType):
    await my_func()
Run Code Online (Sandbox Code Playgroud)

因为单元测试像这样失败:

...
File "/Users/...../tests.py", line 144, in go
    async with self.assertRaises(TestExceptionType):
AttributeError: __aexit__
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:这应该有效吗?如果没有,断言失败的异步功能的最佳方法是什么?

python unit-testing python-3.x python-asyncio

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

如何在RabbitMQ/pika中实现优先级队列

我期待用RabbitMQ实现优先级队列.邮件列表建议使用多个队列,每个队列代表不同的优先级.

我的问题是,如何使用pika(或可能是其他一些python库)以某些优先顺序轮询多个队列?

python priority-queue amqp rabbitmq pika

5
推荐指数
2
解决办法
5438
查看次数

Django Raven很慢

我使用raven和getsentry在django中记录消息,但是日志记录似乎延迟了代码的执行.例如:

# ...view code
tic = datetime.datetime.now()
logging.warning('foo warning')
toc = datetime.datetime.now()
print "log time %s, %s, %s" % (tic, toc, (toc - tic).total_seconds())
# more view code...
Run Code Online (Sandbox Code Playgroud)

给出输出:

log time 2013-09-25 12:03:56.541091, 2013-09-25 12:03:57.139420, 0.598329
Run Code Online (Sandbox Code Playgroud)

ie it's delaying the execution of the code by 600ms in this case. Is this something to be expected? I would have thought the message would have been sent async in a separate thread so the main code doesn't get delayed. Also my ping …

python django sentry raven

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

numpy用datetime64数字化

我似乎无法使用numpy.digitize来处理datetime64:

date_bins = np.array([np.datetime64(datetime.datetime(2014, n, 1), 's') for n in range(1,13)])
np.digitize(date_bins, date_bins)
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

TypeError: Cannot cast array data from dtype('<M8[s]') to dtype('float64') according to the rule 'safe'
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?

python numpy pandas datetime64

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

服务器发送的事件是否使用HTTP/2流水线

通过HTML5 EventSource对象使用SSE时,请求是否使用HTTP/2多路复用/流水线功能?特别是,不同标签(重新)中的SSE请求是否会使用相同的HTTP/2连接?

我假设,因为SSE基于HTTP/1.1 chunked_encoding技术(AFAIK),但想检查.

http-1.1 server-sent-events http2

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