小编akx*_*xlr的帖子

通过HTTPS使用gevent/grequests进行奇怪的阻止行为

以下代码每200ms发送一次请求,并且应该在它们到来时异步处理响应.

通过HTTP,它按预期工作 - 每200ms发送一个请求,并在响应到达时独立调用响应回调.但是,通过HTTPS,只要响应到达,请求就会显着延迟(即使我的响应处理程序不起作用).对于每个请求,响应回调似乎被调用两次,一次是零长度响应(编辑:这是因为重定向并且似乎与阻塞问题无关,感谢Padraic).

什么可能导致这种阻止行为通过HTTPS?(www.bbc.co.uk这只是一个地理位置远离我的例子,但它发生在我测试过的所有服务器上).

grequests_test.py

import time
import sys
import grequests
import gevent

def cb(res, **kwargs):
    print("**** Response", time.time(), len(res.text))

for i in range(10):
    unsent = grequests.get(sys.argv[1], hooks={'response': cb})
    print("Request", time.time())
    grequests.send(unsent, grequests.Pool(1))
    gevent.sleep(0.2)
gevent.sleep(5)
Run Code Online (Sandbox Code Playgroud)

$ ipython2 grequests_test.py 'http://www.bbc.co.uk' (预期结果)

('Request', 1459050191.499266)
('Request', 1459050191.701466)
('Request', 1459050191.903223)
('Request', 1459050192.10403)
('Request', 1459050192.305626)
('**** Response', 1459050192.099185, 179643)
('Request', 1459050192.506476)
('**** Response', 1459050192.307869, 179643)
('Request', 1459050192.707745)
('**** Response', 1459050192.484711, 179643)
('Request', 1459050192.909376)
('**** Response', 1459050192.696583, 179643)
('Request', 1459050193.110528)
('**** Response', 1459050192.870476, …
Run Code Online (Sandbox Code Playgroud)

python https gevent greenlets grequests

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

我可以在`numpy.einsum`中使用超过26个字母吗?

np.einsum用来乘以概率表,如:

np.einsum('ijk,jklm->ijklm', A, B)
Run Code Online (Sandbox Code Playgroud)

问题是我总共处理超过26个随机变量(轴),所以如果我为每个随机变量分配一个字母,我就会用完字母.有没有其他方法可以指定上述操作来避免这个问题,而不是诉诸混乱np.sumnp.dot操作?

python numpy numpy-einsum

7
推荐指数
2
解决办法
1095
查看次数

MPI_IN_PLACE如何与MPI_Scatter一起使用?

MPI_IN_PLACE当作为参数给出MPI_Scatter以及如何使用它时究竟做了什么?我无法理解man MPI_Scatter:

当通信器是一个内部通信器时,您可以就地执行收集操作(输出缓冲区用作输入缓冲区).使用变量MPI_IN_PLACE作为根进程recvbuf的值.在这种情况下,将忽略recvcount和recvtype,并且根进程不会向其自身发送任何数据.由于就地选项将接收缓冲区转换为发送和接收缓冲区,因此包含INTENT的Fortran绑定必须将这些标记为INOUT,而不是OUT.

我想要做的是使用包含根数据的相同缓冲区作为每个其他进程的接收缓冲区(如in MPI_Bcast).将MPI_ScatterMPI_IN_PLACE让我做到这一点?

c distributed-computing mpi

6
推荐指数
1
解决办法
4130
查看次数

声明并初始化三维数组

我想用常量条目初始化Julia中的三维数组.对于我可以使用的2d案例

A = [1 2; 3 4]
Run Code Online (Sandbox Code Playgroud)

是否有类似的3D数组短语法?

julia

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

Gurobi 模型修改慢,可以直接修改约束矩阵吗?

我想对现有模型中的系数进行更改。目前(使用 Python API)我正在遍历约束并调用,model.chgCoeff但速度很慢。在 Python 和/或 C API 中,是否有更快的方法,也许可以直接访问约束矩阵?

下面的示例代码。它缓慢的原因似乎主要是因为循环本身;用chgCoeff任何其他操作替换仍然很慢。通常我会通过使用向量运算而不是 for 循环来解决这个问题,但如果无法访问约束矩阵,我认为我无法做到这一点。

from __future__ import division
import gurobipy as gp
import numpy as np
import time
N = 300
M = 2000
m = gp.Model()
m.setParam('OutputFlag', False)

masks = [np.random.rand(N) for i in range(M)]
p = 1/np.random.rand(N)
rets = [p * masks[i] - 1 for i in range(M)]
v = np.random.rand(N)*10000 * np.round(np.random.rand(N))

t = m.addVar()
x = [m.addVar(vtype=gp.GRB.SEMICONT, lb=1000, ub=v[i]) for i in range(N)]
m.update()
cons …
Run Code Online (Sandbox Code Playgroud)

python mathematical-optimization linear-programming gurobi

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

由于http:// testserver前缀,Django assertRedirects测试失败

我想测试/sitemap.xml/重定向到/sitemap.xml.我正在使用此代码:

res = self.client.get('/sitemap.xml/')
self.assertRedirects(res, '/sitemap.xml', status_code=301)
Run Code Online (Sandbox Code Playgroud)

并收到以下错误:

AssertionError: Response redirected to 'http://testserver/sitemap.xml', expected '/sitemap.xml'
Run Code Online (Sandbox Code Playgroud)

我该如何编写此测试以避免testserver冲突?

django django-testing django-1.11

4
推荐指数
1
解决办法
326
查看次数