我创建了一个依赖于全局变量的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的首选解决方案?
我正在做一些我必须imshow()
经常打电话的图像处理.但是,默认的colormap和属性对我不起作用,所以我必须这样做:
gray()
imshow(myImage, interpolation='none', origin='lower')
Run Code Online (Sandbox Code Playgroud)
如何设置imshow
默认值,interpolation='none', origin='lower'
以便可以调用它imshow(myImage)
?
我已经设置了 Gerrit-Git-Jenkins 组合。我正在为 Jenkis 使用以下插件。
我正在运行一个虚拟的 Jenkins 工作,它总是能够成功用于开发目的。我注意到当我将更改推送到 Gerrit 时,文件不会显示在 Jenkins 工作区中。
在 Jenkins Git 配置中设置的存储库 URL 是git://localhost/project
我尝试手动克隆它并git clone git://localhost/project
获取我期望的文件。
Jenkins 克隆哪个存储库以填充其工作区?
它克隆git://localhost/project
。我已经通过git remote show origin
作为构建脚本运行,然后查看日志输出进行了测试。
Jenkins 运行什么命令来填充工作区,因为它似乎不是 HEAD 的克隆?
这是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) 我在我的web项目中有一个耗时的功能.当函数正在进行计算时,应该呈现一个网页,通知用户一旦计算完成,结果将通过电子邮件发送.
如果我在函数调用之后放置渲染,那么在time_consuming_function()完成之后,网页将不会被渲染,这将使响应变得毫无意义.
views.py:
def web_function(request):
...
time_consuming_function()
return HttpResponse()
Run Code Online (Sandbox Code Playgroud)
python线程是唯一的方法吗?
更新
结束使用cellery,因为它似乎比ztaskd更好记录
我正在使用与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_request
和shutdown
方法.
尝试解决方案
我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行通过后(我无法进入),连接关闭.
我以某种方式怀疑通过套接字保持连接是如此喧嚣,这基本上是我们选择通过套接字进行通信,拥有连续连接而不是"每个已发送消息的一个连接"系统的原因.
关于实施或链接的想法?
我试图在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) 是否有一种机制可以检查标头是否正确遵循实现?
例
//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概念发挥作用时难以追踪的错误(具有大型原型的类).
或者有什么我缺少的东西,能够定义一个不同的标题是一件好事,一个人必须要小心吗?
我在文档中有一个这样定义的方法.
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 &
?
在下面的示例中:
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位值为什么印刷两种char
及int16_t
,为什么他们能进行比较和被认为是一样的吗?
c ×2
c++ ×2
django ×2
python ×2
django-views ×1
gerrit ×1
git ×1
header-files ×1
jenkins ×1
linux ×1
matplotlib ×1
numpy ×1
qt ×1
sockets ×1