小编Ant*_*nin的帖子

带有HTTPServer的python3中的SSL

我在这里找到了一个(显然)工作的HTTPS服务器for python 2:http://code.activestate.com/recipes/442473-simple-http-server-supporting-ssl-secure-communica/?c = 15536

我试图在python3中移植它,但我没有好结果.这是我的代码:

from socketserver import BaseServer
import string,cgi,time
from os import curdir, sep
from http.server import SimpleHTTPRequestHandler, HTTPServer
import ssl
import os # os. path
import socket

class SecureHTTPServer(HTTPServer):
    def __init__(self, server_address, HandlerClass):
        BaseServer.__init__(self, server_address, HandlerClass)
        ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
        #server.pem's location (containing the server private key and
        #the server certificate).
        fpem = 'certificate1.pem'
        ctx.load_verify_locations(fpem)
        self.socket = ctx.wrap_socket(socket.socket(self.address_family,
                                                        self.socket_type))
        self.server_bind()
        self.server_activate()


class SecureHTTPRequestHandler(SimpleHTTPRequestHandler):
    def setup(self):
        self.connection = self.request
        self.rfile = socket._fileobject(self.request, "rb", self.rbufsize)
        self.wfile …
Run Code Online (Sandbox Code Playgroud)

ssl https python-3.x

9
推荐指数
2
解决办法
6713
查看次数

numpy,获得最大的子集

我有值的阵列,所述v(例如v=[1,2,3,4,5,6,7,8,9,10])和索引的阵列,说g(例如 g=[0,0,0,0,1,1,1,1,2,2]).

我知道,例如,如何以非常简单的方式采取每个组的第一个元素:

import numpy as np
v=np.array([1,2,3,4,74,73,72,71,9,10])
g=np.array([0,0,0,0,1,1,1,1,2,2])
mask=np.concatenate(([True],np.diff(g)!=0))
v[mask]
Run Code Online (Sandbox Code Playgroud)

收益:

array([1, 74, 9])
Run Code Online (Sandbox Code Playgroud)

是否有任何numpythonic方式(避免显式循环)来获得每个子集的最大值?


测试:

因为我收到了两个很好的答案,一个是python map,一个是numpy例程,我正在搜索性能最好的,这里有一些时间测试:

import numpy as np
import time
N=10000000
v=np.arange(N)
Nelemes_per_group=10
Ngroups=N/Nelemes_per_group
s=np.arange(Ngroups)
g=np.repeat(s,Nelemes_per_group)

start1=time.time()
r=np.maximum.reduceat(v, np.unique(g, return_index=True)[1])
end1=time.time()
print('END first method, T=',(end1-start1),'s')

start3=time.time()
np.array(list(map(np.max,np.split(v,np.where(np.diff(g)!=0)[0]+1))))
end3=time.time()
print('END second method,  (map returns an iterable) T=',(end3-start3),'s')
Run Code Online (Sandbox Code Playgroud)

结果我得到:

END first method, T= 1.6057236194610596 s
END second method,  (map returns an iterable) T= 8.346540689468384 s …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy max vectorization

8
推荐指数
1
解决办法
1088
查看次数

Sequelize:加入两次同桌

背景:

我有一张Users与一对多关系的桌子Userlang.例如:

 userlang.id userlang.userid userlang.lang     
+-----------+---------------+-------------+
 1            1              EN
 2            1              FR
 3            1              IT
 4            2              EN
 5            2              DE
 6            3              IT
Run Code Online (Sandbox Code Playgroud)

我想选择所有的用户和他们的userlangs至少一个userlang.lang=EN.

所以,我不能使用以下查询:

Select USERS.id from USERS inner join USERLANG on USERS.ID=USERLANG.USERID where USERLANG.LANG="EN"
Run Code Online (Sandbox Code Playgroud)

因为它只选择Userlangs带有a 的行lang="EN",而我想选择userlang每个用户的所有行,其中至少有一行lang="EN"

我已经能够用SQL以两种方式编写这样的查询:

使用子查询:

Select * 
from USERS inner join USERLANG on USERS.ID=USERLANG.USERID
where USERS.ID in (
    Select USERS.id 
    from USERS inner join USERLANG on …
Run Code Online (Sandbox Code Playgroud)

sql postgresql node.js sequelize.js

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

Matplotlib:个性化 imshow 轴

我有(H,ranges) = numpy.histogram2d()计算的结果,我正在尝试绘制它。

鉴于H我可以轻松地将其放入plt.imshow(H)以获得相应的图像。(见http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow

我的问题是生成的图像的轴是 的“细胞计数”H并且与 的值完全无关ranges.

我知道我可以使用关键字extent(如:更改 matplotlib imshow() 图形轴上的值)。但是这个解决方案对我不起作用:我的价值range不是线性增长(实际上它们呈指数增长)

我的问题是:我怎样才能输入rangein的值plt.imshow()?或者至少,或者我可以手动设置plt.imshow结果对象的标签值吗?

编辑extent不是一个好的解决方案。

matplotlib python-3.x

6
推荐指数
3
解决办法
8641
查看次数

如何获取通过setsid执行的进程的ID

我计划通过 webapp 控制一些程序(如媒体播放器和 shell),因为每次用户访问网页时网页都会死,我决定 webapp 将打开程序,setsid然后 webapp 将通过管道。

注意:我不能使用nohup因为nohup bash -i <fifoin >fifoout 2>&1 &自动停止之类的东西。

随着setsid一切完美,但我不能杀死进程,因为我不知道派生进程的ID!..那么,我怎样才能检索setsided 进程的 ID ?

我试过类似的东西

setsid bash -i <fifoin >fifoout 2>&1
kill $!
kill $$
Run Code Online (Sandbox Code Playgroud)

结果,两者kill都不起作用,我不会搜索 ID,ps -e因为我无法杀死所有正在运行的 bash -ishell!

bash

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

c:在ui:repeat中的forEach inside primefaces(例如p:panelgrid)

我必须以恐怖的方式制作一份表格清单.它们中的每一个都具有可变数量的列(具有固定行).

为了执行此操作,我首先将<p:panelGrid>内部放入<ui:repeat>:所以我正确地生成了一个表列表.

然后,为了恐怖地制作柱子,我试着把它们放在一个 <ui:repeat>或一个 <c:forEach>里面<p:panelGrid>.在结果中我没有获得任何行.

我在这里写了一个小例子.在bean中testBackingBean,我已定义(并初始化)变量ArrayList<ArrayList<String>> tables.这是不会产生预期结果的xhtml:

<ui:repeat var="table" value="#{testBackingBean.tables}">
    <p:panelGrid>
        <f:facet name="header">
            <p:row>
                <p:column >header of #{table}</p:column>
            </p:row>
        </f:facet>
        <p:row>
            <c:forEach var="row" items="${table}">
                <p:column>#{row}</p:column>
            </c:forEach>
        </p:row>
    </p:panelGrid>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)

值得注意的是,标题行正确转换#{table}为字符串.问题是我看不到任何数据行.

此外,如果我使用<table>而不是<p:panelGrid>一切工作如期望的那样.

另外,我尝试了不同的排列<c:forEach><ui:repeat>没有更迭.

那么,我怎样才能产生更多的表格(使用素数面)并设置一个dinamical数量的列?

谢谢!

编辑:我想使用两个<c:forEach>,但即使只有一个<c:forEach>我得到一个空的结果.事实上,如果我尝试以下xhtml:

<c:forEach  items="${testBackingBean.tables}" var="tabella">
    current element: #{tabella}
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

然后我得到一个空的结果.(我知道,这是一个不同的问题)

jsf primefaces jsf-2 panelgrid

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

符合scipy.optimize参数的错误

我将scipy.optimize.minimizehttps://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html)函数与结合使用method='L-BFGS-B

上面返回的示例如下:

      fun: 32.372210618549758
 hess_inv: <6x6 LbfgsInvHessProduct with dtype=float64>
     jac: array([ -2.14583906e-04,   4.09272616e-04,  -2.55795385e-05,
         3.76587650e-05,   1.49213975e-04,  -8.38440428e-05])
  message: 'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'
     nfev: 420
      nit: 51
   status: 0
  success: True
        x: array([ 0.75739412, -0.0927572 ,  0.11986434,  1.19911266,  0.27866406,
       -0.03825225])
Run Code Online (Sandbox Code Playgroud)

x值正确包含适合的参数。如何计算与这些参数相关的误差?

numpy curve-fitting scipy

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

无法腌制scipy.spatial.KDTree对象

我有一个代码,我建立一个巨大的树,我需要保存它以供以后使用.不幸的是,我似乎无法腌制scipy.spatial.KDTree物体.

事实上,当我运行这个:

import pickle
import scipy.spatial
tree=scipy.spatial.KDTree([[1,2,3]])
pickle.dump(tree,open('tree.p','wb'))
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/pickle.py", line 1370, in dump
    Pickler(file, protocol).dump(obj)
  File "/usr/lib64/python2.7/pickle.py", line 224, in dump
    self.save(obj)
  File "/usr/lib64/python2.7/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib64/python2.7/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib64/python2.7/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib64/python2.7/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib64/python2.7/pickle.py", line 663, in _batch_setitems …
Run Code Online (Sandbox Code Playgroud)

python pickle scipy

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

在bash数组元素中存储函数

如何将函数定义为数组的元素?

我知道我可以这样做:

function array[5](){ echo "you are inside the function"; }
Run Code Online (Sandbox Code Playgroud)

并且它是一个有效的函数,在某种意义上说,指令array[5]正确执行函数.

不幸的是,该功能未列在数组的键中,因此,echo ${!array[*]}不会5作为键返回.

例如,以下代码:

array[0]="first"
function array[5](){ echo "you are inside the function"; }
array[7]="seventh"
echo ${!array[*]}
Run Code Online (Sandbox Code Playgroud)

只返回0 7.

那么,我如何向数组元素添加一个函数,以便我可以循环它?

bash

2
推荐指数
1
解决办法
61
查看次数

如何使用 C/OpenACC 和 PGI 编译器声明全局动态数组

我正在尝试运行一个简单的测试用例,其中动态分配的数组A是外部定义的,并使用 OpenACC 上传到 GPU。一切都与 PGI 编译器有关。

我的 header.h文件:

     extern int *A;
     #pragma acc declare create(A)
Run Code Online (Sandbox Code Playgroud)

然后,我的header.c实现:

    int *A;
    #pragma acc declare copyin(A)
Run Code Online (Sandbox Code Playgroud)

然后,在main.c我有

#include "header.h"
int main(int argc, char* argv[]){
        printf("main() start\n");
        int sum=0;
        int N=0;
        if(argc==1){ 
          printf("usage: ./main.exe N");
        }else{
          N=atoi(argv[1]);  
        }
        printf("N =%d\n", N);
        A=(int*)malloc(N*sizeof(int));
        for(int i=0;i<N;i++){A[i]=i;}
        printf("almost data region\n");
        #pragma acc data copy(sum)
        {
             printf("inside data region\n");
             #pragma acc update device(A[0:N])
             #pragma acc parallel loop reduction(+:sum)
             for(int i=0;i<N;i++){
                sum+=A[i];
             } …
Run Code Online (Sandbox Code Playgroud)

c cuda pgi openacc pgi-accelerator

0
推荐指数
1
解决办法
1193
查看次数