小编Eli*_*sky的帖子

在长时间运行的任务中保持GUI响应

在应用程序执行一些CPU繁重处理时保持GUI响应是有效GUI编程的挑战之一.

这里有一个很好的讨论如何在wxPython中执行此操作.总而言之,有3种方式:

  1. 使用线程
  2. 使用wxYield
  3. 将工作分块并在IDLE事件处理程序中执行

发现哪种方法最有效?其他框架(如Qt,GTK或Windows API)的技术也很受欢迎.

python user-interface wxpython

11
推荐指数
2
解决办法
3934
查看次数

为什么字典值不在插入的顺序中?

当我声明一个列表1,2,3,4并且我对它做了一些事情,即使只是打印我也会得到相同的序列1,2,3,4.

但是当我对字典做任何事情的时候,它们总是会改变数字序列,就好像它是以一种我无法理解的扭曲方式排序.

test1 = [4,1,2,3,6,5]
print test1
test2 = {"c":3,"a":1,"b":2,"d":4}
print test2 

[4, 1, 2, 3, 6, 5]
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
Run Code Online (Sandbox Code Playgroud)

世界上的'a'如何成为第一个元素和'c',即使按字母顺序对字典进行排序,它应该是1,2,3,4或a,b,c,d不是1,3,2, 4.wT?F @!$!@ $#@!

那么我如何打印,从字典中获取值而不改变元素的位置.

python dictionary sequence

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

为什么gcc强制PIC为x64共享库?

尝试将非PIC代码编译到x64上的共享库中,gcc导致错误,例如:

/usr/bin/ld: /tmp/ccQ2ttcT.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
Run Code Online (Sandbox Code Playgroud)

这个问题是为什么会这样.我知道x64具有RIP相对寻址,旨在提高PIC代码的效率.但是,这并不意味着加载时重定位不能(理论上)应用于此类代码.

一些在线资源,包括这个(在这个问题上被广泛引用)声称,由于 RIP相对寻址,在共享库中禁止非PIC代码存在一些固有的限制.我不明白为什么这是真的.

考虑"旧x86" - call指令也有一个IP相关操作数.然而,其中的x86代码可以call很好地编译成没有PIC的共享库,但使用加载时重定位 R_386_PC32.对于x64中的数据RIP相对寻址,不能做同样的事情吗?

请注意,我完全理解PIC代码的好处,并且性能损失RIP相对寻址有助于缓解.不过,我很好奇不允许使用非PIC代码的原因.它背后是否有真正的技术推理,还是鼓励编写PIC代码?

linux x86 assembly x86-64 shared-libraries

10
推荐指数
2
解决办法
3983
查看次数

什么是Python或Perl中的一个好的开源pastebin?

我正在寻找一个用Python或Perl编写的开源pastebin web应用程序.我需要它来为我自己的需要实现一个基于Web的专业编辑器,我想从pastebin借用代码/想法,因为我没有太多的Web编程经验.

你能指出一个(或几个)吗?

提前致谢

python perl open-source pastebin

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

通过bit twiddling在循环调度中找到下一个

考虑以下问题.您有一个位串,表示一个热编码中的当前调度从属.例如,"00000100"(最左边的位为#7,最右边的#0)表示调度了从属#2.

现在,我想在循环调度方案中选择下一个计划的从站,并进行扭曲.我有一个"请求掩码",说明实际上想要安排哪些奴隶.将仅从想要的人那里挑选下一个奴隶.

一些例子(假设循环调度是通过向左旋转完成的).例1:

  • 当前:"00000100"
  • 面具:"01100000"
  • 下一个时间表:"00100000" - 在正常循环中,#3然后#4应该在#2之后,但是他们没有请求,所以选择了#5.

例2:

  • 目前:"01000000"
  • 面具:"00001010"
  • 下一步:"00000010" - 因为调度是通过左循环完成的,而#1是该命令中的第一个请求从属.

现在,我知道,这可以很容易地循环编码.但实际上我想通过一个有点笨拙的操作得到我的结果,没有循环.动机:我想在VHDL/Verilog的硬件(在FPGA中)实现这一点.

奖励是组成一个对任何数量的奴隶N都是通用的算法.

顺便说一句,这不是一个功课问题.无论何时想要以某种方式安排从属设备,并通过从属设备的请求来调度调度,这都是一个重要的问题.我目前的解决方案有点"沉重",我想知道我是否遗漏了一些明显的东西.

algorithm verilog bit-manipulation vhdl

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

PyQt中复选框的ListView

我想显示一个QListView,其中每个项目都是带有一些标签的复选框.复选框应始终可见.我能想到的一种方法是使用自定义委托和QAbstractListModel.有更简单的方法吗?你能提供最简单的代码片段吗?

提前致谢

python qt pyqt qlistview qitemdelegate

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

C++智能指针:共享指针与共享数据

在这篇富有洞察力的文章中,其中一位Qt程序员试图解释Qt实现的各种智能指针.在开始时,他区分共享数据和共享指针本身:

首先,让我们直截了当:共享指针和共享数据之间存在差异.共享指针时,指针的值及其生命周期受智能指针类的保护.换句话说,指针是不变的.但是,指针指向的对象完全在其控制之外.我们不知道该对象是否可以复制,如果它是可分配的.

现在,共享数据涉及智能指针类,了解有关共享数据的信息.事实上,重点是数据正在共享,我们并不关心如何.在这一点上,指针被用于共享数据的事实是无关紧要的.例如,你真的不关心如何隐式共享Qt工具类,对吗?对您来说重要的是它们是共享的(从而减少了内存消耗),并且它们的工作就好像它们不同.

坦率地说,我只是不解释这个解释.文章评论中有一个澄清的请求,但我没有发现作者的解释充分.

如果你这样做明白这一点,请解释.这是什么区别,以及其他共享指针类(即来自boost或新的C++标准)如何适应这种分类?

提前致谢

c++ qt smart-pointers

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

私有操作符在c ++中删除

我正在为我的一个项目中的一系列对象开发垃圾收集机制.我想要的是动态分配这些对象,new而不必调用delete.

这可以通过重载operator new来调用为这些对象实现GC的专用分配器对象(当分配了太多内存时触发收集).但是,我遇到了一个问题:用户仍然可以delete对这些对象执行操作,但我不希望这样.

使operator delete私有是因为++处理故障在建设路上的C问题-如果operator new是公开的,operator delete应该是太.这有时也被认为是替代只是使双方operator newoperator delete私有的,只能暴露出工厂创建方法给用户.我可以做到这一点,但它感觉不太干净,需要额外的代码来编写.

编辑:另一种方法是使operator delete空(或抛出异常).然后,要实际释放对象,我的GC将显式调用析构函数,然后使用全局释放内存::operator delete.

还有其他想法吗?

c++ garbage-collection memory-management new-operator

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

有效解决Python中的字母/数字问题

如果a = 15152表示为a2while,215则表示为2a必须找到数字x

8x = 8*x8

我试过这个天真的Python代码

>>> i = 0
>>> while(i<=100000000000000000):
...   if(int("8"+str(i))==8*int(str(i)+"8")):
...     break
...   i = i+1
... print i
Run Code Online (Sandbox Code Playgroud)

但是要花费大量时间才能产生正确的结果.

如何优化代码?

python math

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

扩展的正则表达式是否支持反向引用?

维基百科,扩展的正则表达式"不再支持反向引用",因此必须使用"基本"正则表达式模式来实现这些功能.但是,似乎许多实现支持扩展正则表达式的反向引用.例如,在Ubuntu Precise上使用gcc 4.6,它们是受支持的.FreeBSD实现似乎只在基本模式下支持它们.

Boost说(并且似乎同意维基百科),扩展正则表达式不支持反向引用,但Boost :: Regex将它们作为扩展添加.

这只是标准中一个定义不明确的部分,每个实现的解释都不同吗?

c regex posix

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