小编Har*_*Har的帖子

Python 等待队列和事件

我有一个队列和一个事件。当事件设置为 True 时,我想退出循环,但是循环中有一个 queue.get() 会阻塞,直到它里面有东西。

设置 closeEvent 事件标志后,如何中止 self._commandQueue.get() 的等待?

注意:我想避免依赖于队列的阻塞性质,想根据队列的条件和事件标志进行阻塞

def _execute(self):
    while not self._closeEvent.isSet():
        nextCommand = self._commandQueue.get()
        self._commandExecutor.execute(nextCommand)
        self._commandQueue.task_done()
Run Code Online (Sandbox Code Playgroud)

python multithreading multiprocessing python-2.7

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

如何在C中使用有限硬件对无符号整数执行模运算

我有一台只支持32位操作的机器,很长时间不能在这台机器上工作.我有一个64位数量表示为两个unsigned int 32s.问题是如何使用32位除数对64位数量执行mod.

r = a mod b

哪里:

a是64位值,b是32位值

我以为我可以通过这样做来表示mod部分:a = a1*(2 ^ 32)+ a2(其中a1是顶部位,a2是底部位)

(a1*(2 ^ 32)+ a2)mod b =((a1*2 ^ 32)mod b + a2 mod b)mod b

((a1*2 ^ 32)mod b + a2 mod b)mod b =(a1 mod b*2 ^ 32 mod b + a2 mod b)mod b

但问题是2 ^ 32 mod b有时可能等于2 ^ 32,因此乘法会溢出.我已经看过尝试将乘法转换为加法,但这也需要我使用2 ^ 32,如果我mod将再次给我2 ^ 32 :)所以我不知道如何执行64位的无符号mod值为32位.

我想这个简单的解决方案是执行以下操作:

  1. a/b = c

  2. a = a - floor(c)*b

  3. 执行1直到c等于0并使用a作为答案.

但我不知道如何将这两个整数组合在一起形成64位值

在这里完成的是二进制除法和减法的一些链接:http: //www.exploringbinary.com/binary-division/

和二进制除法算法的描述:http …

c algorithm math numbers

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

Python 2.7:作为对象的Ints

python中的int如何避免成为一个对象,但却是一个:

如果我执行以下操作:

>>> dir(10)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__format__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'imag', 'numerator', 'real']
>>> 10.__add__(20)
  File "<stdin>", line 1
    10.__add__(20)
             ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

如果我输入10.它产生10.0而10之类的任何东西__产生语法错误.它确实有意义,因为浮点数将被视为10.5但是 …

python python-2.7

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

为什么 sys.path 是一个列表?

为什么实现者会选择制作sys.path一个列表而不是有序集?

sys.path一个名单获得了具有路径多个复制,减缓搜索时间为模块的可能性。

一个人为的例子将是以下愚蠢的例子

# instant importing
import os
import sys

for i in xrange(50000):
    sys.path.insert(0, os.path.abspath(".")

# importing takes a while to fail
import hello
Run Code Online (Sandbox Code Playgroud)

从给出的评论和答案中总结:

从下面的回复看来,列表是一个简单的结构,可以处理 99% 的每个人的需求,它没有避免重复的安全功能,但它确实带有原始优先级,即列表中元素的索引您可以通过添加轻松设置最高优先级或通过附加设置最低优先级。

添加更丰富的优先级,即在此元素之前插入将很少使用,因为对于一个简单的任务来说,它的接口将是太多的工作。正如公认的答案所述,实际上不需要任何更高级的东西来覆盖这些额外的用例,因为历史上人们已经习惯了这一点。

python python-internals

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

为什么b =(a + = 1)是python中无效的语法?

如果我在python中编写以下内容,我会收到语法错误,为什么会这样?

a = 1
b = (a+=1)
Run Code Online (Sandbox Code Playgroud)

我使用的是python版本2.7

我运行它时得到的结果如下:

>>> a = 1
>>> b = (a +=1)
  File "<stdin>", line 1
    b = (a +=1)
        ^
SyntaxError: invalid syntax
>>>
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

Python:如何在表达式中创建列表推导后重新使用列表推导

如何在使用带有if else表达式的列表推导创建的表达式中重用相同的列表?在单个语句/表达式中实现它(不使用任何中间变量)即为index = 0 if [listcomprehension]空其他获取列表推导的第一个元素而不重新创建它

carIndex = [index
            for index, name in enumerate([car.name for car in cars]) 
            if "VW" in name or "Poodle" in name][0]
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

Python 2.7:如何获取类中的静态变量列表?

如果我有一个课程如下:

class myclass(object):
    i = 20
    j = 30
    k = 40
    def __init__(self):
        self.myvariable = 50
Run Code Online (Sandbox Code Playgroud)

如何获得包含i,j和k的列表?(该类的静态成员)我试图使用:

[x for x in dir(a) if isinstance(getattr(a, x), (int, long))]
Run Code Online (Sandbox Code Playgroud)

然而,这也返回self.myvariable.有没有办法在实例和类类型上执行此操作?

python python-2.7

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

Python 2.7:附加到字典键的列表值

我有以下数据:

data = [(1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3)]
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含键列表值的字典,我怎样才能用字典理解呢?

即:

{1: [2,3,4]
 2: [1,2,3]
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容,但列表在每次迭代时都会被覆盖.

{x: [y] for x,y in data}
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

什么是全局格式()函数意味着什么?

还有就是str.format()在python,我很熟悉但它不工作的方式相同的方法format()功能(全球内置).

全球format()职能的目的是什么?

python string-formatting

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

Matplotlib:调整刻度以适合图中

我有以下matplotlib代码,它所做的全部是在x轴上绘制0-20,在y轴上绘制0-100

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(20))
ax.set_yticks(range(100))
labels = ax.set_yticklabels(range(100))
Run Code Online (Sandbox Code Playgroud)

我的问题是,并非所有标签实际上都适合y轴。

我要做的是将最大标签尺寸除以图形的总面积,以计算可以放入的标签数量,然后将数据分组为0-10、10-20、30-40部分并绘制而不是显示单个标签1,2,3,4,5,6,7,8 ...

我在查找标签的标签大小和图形的标签大小时遇到​​麻烦(如果我写错了,请纠正我,也许是像素的轴大小。这是我第一次使用matplotlib)

如何找出图形/轴占用的像素数(宽度+高度)以及每个标签的像素数(宽度+高度)?

情节

python matplotlib figure

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