小编The*_*eer的帖子

在Django视图中摆脱全局变量?

我创建了一个依赖于全局变量的Django应用程序.它实际上是一种存储库对象,应该可用于我的view.py中的所有函数.

从代码中可以看出,每个视图函数都修改了rp全局变量.

view.py

def index(request):
    global rp
    rp = repo.Repo()
    ...
    rp.function1()
    rp.function2()
    rp.attribute1 = value

    return render_to_response('result_pick.html',{'result_list': rp.parsed_output_data, 'input_file_name': rp.input_file_name }, context_instance = RequestContext(request))

def result(request):
    global rp
    rp.function3()
    local_atribute = rp.attribute1
    ....
    return render_to_response('result_show.html' ,{'rp':rp}, context_instance = RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

浏览了一下之后,我得到的印象是,当多个用户访问网页时,这会失败,因为他们会分享全局的rp,这会导致问题.

什么是摆脱全局变量但仍然能够在两个函数中访问rp的首选解决方案?

django django-views

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

设置matplotlib方法的默认值

我正在做一些我必须imshow()经常打电话的图像处理.但是,默认的colormap和属性对我不起作用,所以我必须这样做:

gray()
imshow(myImage, interpolation='none', origin='lower')
Run Code Online (Sandbox Code Playgroud)

如何设置imshow默认值,interpolation='none', origin='lower'以便可以调用它imshow(myImage)

matplotlib

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

从 Gerrit/Git 填充 Jenkins 工作区

我已经设置了 Gerrit-Git-Jenkins 组合。我正在为 Jenkis 使用以下插件。

  • Gerrit 触发器
  • Git 客户端插件
  • 詹金斯 GIT 插件

我正在运行一个虚拟的 Jenkins 工作,它总是能够成功用于开发目的。我注意到当我将更改推送到 Gerrit 时,文件不会显示在 Jenkins 工作区中。

在 Jenkins Git 配置中设置的存储库 URL 是git://localhost/project我尝试手动克隆它并git clone git://localhost/project获取我期望的文件。

Jenkins 克隆哪个存储库以填充其工作区?

它克隆git://localhost/project。我已经通过git remote show origin作为构建脚本运行,然后查看日志输出进行了测试。

Jenkins 运行什么命令来填充工作区,因为它似乎不是 HEAD 的克隆?

git gerrit jenkins jenkins-plugins

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

在线程返回时返回一个空指针

这是apue 的一个剥离示例

#include <pthread.h>
#include <errno.h>
#include <unistd.h>
#include <stdio.h>

void err_exit(const char* text){
    char buf[200];
    sprintf(buf, text);
    perror(buf);
    abort();
}

void * thr_fn1(void *arg)
{
    printf("thread 1 returning \n");
    return ((void *)1);
    //This is returning the pointer to 1.
    //Is this address somewhat special?
}

int main(int argc, char *argv[])
{
    int         err;
    pthread_t   tid1;
    void        *tret;

    err = pthread_create(&tid1, NULL, thr_fn1, NULL);
    if (err != 0) {
        err_exit("can't create thread 1");
    }

    err = pthread_join(tid1, &tret); …
Run Code Online (Sandbox Code Playgroud)

c linux multithreading

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

Django中同时进行多任务处理

我在我的web项目中有一个耗时的功能.当函数正在进行计算时,应该呈现一个网页,通知用户一旦计算完成,结果将通过电子邮件发送.

如果我在函数调用之后放置渲染,那么在time_consuming_function()完​​成之后,网页将不会被渲染,这将使响应变得毫无意义.

views.py:

def web_function(request):
    ...
    time_consuming_function()
    return HttpResponse()
Run Code Online (Sandbox Code Playgroud)

python线程是唯一的方法吗?


更新

结束使用cellery,因为它似乎比ztaskd更好记录

python django

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

防止在python SocketServer中关闭请求

我正在使用与Android连接的python套接字服务器并定期发送消息.我有一个问题,请求在每个发送的消息上关闭,我需要它保持打开,直到Android决定关闭它.

Curentlly它看起来像这样:

class SingleTCPHandler(SocketServer.StreamRequestHandler):
    def handle(self):
    try:
        while True:
            message = self.rfile.readline().strip()  # clip input at 1Kb            
            my_event = pygame.event.Event(USEREVENT, {'control':message})
            pygame.event.post(my_event)
    except KeyboardInterrupt:
        sys.exit(0)
    finally:
        self.request.close()
Run Code Online (Sandbox Code Playgroud)

我已经通过while True在我的handle()定义中添加一个来解决这个问题,然而,这被批评为一个糟糕的解决方案,正确的方法是覆盖process_requestshutdown方法.

尝试解决方案

while从代码中删除了代码,用netcat在本地连接到服务器,发送了一条消息,然后查看连接何时关闭.

我想看看连接关闭后的方法是什么,以确定我必须覆盖的内容.

我已经通过调试器步入serve_forever()并跟随它到这部分代码:

> /usr/lib/python2.7/threading.py(495)start()
    494         try:
--> 495             _start_new_thread(self.__bootstrap, ())
    496         except Exception:
Run Code Online (Sandbox Code Playgroud)

在第495行通过后(我无法进入),连接关闭.

我以某种方式怀疑通过套接字保持连接是如此喧嚣,这基本上是我们选择通过套接字进行通信,拥有连续连接而不是"每个已发送消息的一个连接"系统的原因.

关于实施或链接的想法?

python sockets

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

两个向量的矩阵乘法

我试图在numpy中进行两个向量的矩阵乘法,这将导致一个数组.

In [108]: b = array([[1],[2],[3],[4]])
In [109]: a =array([1,2,3])
In [111]: b.shape
Out[111]: (4, 1)
In [112]: a.shape
Out[112]: (3,)
In [113]: b.dot(a)
ValueError: objects are not aligned
Run Code Online (Sandbox Code Playgroud)

从形状可以看出,阵列a实际上不是矩阵.问题是这样定义a.

In [114]: a =array([[1,2,3]])    
In [115]: a.shape
Out[115]: (1, 3)    
In [116]: b.dot(a)
Out[116]: 
array([[ 1,  2,  3],
       [ 2,  4,  6],
       [ 3,  6,  9],
       [ 4,  8, 12]])
Run Code Online (Sandbox Code Playgroud)

获取矢量作为矩阵的字段或列时,如何获得相同的结果?

In [137]: mat = array([[ 1,  2,  3],
       [ 2,  4,  6],
       [ 3,  6,  9], …
Run Code Online (Sandbox Code Playgroud)

numpy

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

标头与C++中的实现不同

是否有一种机制可以检查标头是否正确遵循实现?

//my_pi.cpp
float my_pi(){
    return 3.14;
}


//my_pi.h
int my_pi();


//main.cpp
#include <iostream>
#include "my_pi.h"

int main()
{
    float returned;
    returned = my_pi();
    cout << returned;
}
Run Code Online (Sandbox Code Playgroud)

这编译没有错误,但它给出了错误的结果.我刚刚开始学习C++,这看起来像是一种非常简单的方法来制作在OOP概念发挥作用时难以追踪的错误(具有大型原型的类).

或者有什么我缺少的东西,能够定义一个不同的标题是一件好事,一个人必须要小心吗?

c++ header-files

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

QList :: at()返回对常量的引用?

我在文档中有一个这样定义的方法.

const T & QList::at(int i) const
Run Code Online (Sandbox Code Playgroud)

基于这个答案, 我将其描述为:

QList :: at返回对const对象T的引用,而不修改QList.

但是如果这种解释是正确的,那么它将返回对我不应该改变的对象的引用.但是这是在没有错误传递的情况下编译的(currentTime()修改属性returnedStation.time):

T referenceToReturnedObject = myQlist.at(1);
    referenceToReturnedObject.time.currentTime();
Run Code Online (Sandbox Code Playgroud)

第一次const引用是什么,它在返回时发布了什么限制T &

c++ qt

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

Char和int16数组元素都显示为32位十六进制?

在下面的示例中:

int main(int argc, char *argv[])
{
    int16_t array1[] = {0xffff,0xffff,0xffff,0xffff};
    char array2[] = {0xff,0xff,0xff,0xff};
    printf("Char size: %d \nint16_t size: %d \n", sizeof(char), sizeof(int16_t));

    if (*array1 == *array2)
        printf("They are the same \n");
    if (array1[0] == array2[0])
        printf("They are the same \n");

    printf("%x \n", array1[0]);
    printf("%x \n", *array1);

    printf("%x \n", array2[0]);
    printf("%x \n", *array2);
}
Run Code Online (Sandbox Code Playgroud)

输出:

Char size: 1 
int16_t size: 2 
They are the same 
They are the same 
ffffffff 
ffffffff 
ffffffff 
ffffffff
Run Code Online (Sandbox Code Playgroud)

32位值为什么印刷两种charint16_t,为什么他们能进行比较和被认为是一样的吗?

c variadic-functions integer-promotion

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