小编fam*_*man的帖子

Python 中 switch/case 的语法等价物是什么?

C/C++、C#、Java、JavaScript 和 Pascal 参考等编程语言具有switchandcase语句(有时也称为selector inspect)的组合,允许您根据多个条件检查一个值以执行某些操作。

my_value = 10;
switch(my_value) {
    case 10:
        print("The number is ten");
    case 2*10:
        print("The number is the double of ten");
    case 100:
        print("The number is one hundred");
    default:
        print("The number is none of 10, 2*10 or 100");
}
Run Code Online (Sandbox Code Playgroud)

描述switch-case结构的特殊语法的伪代码。

意识到像dictionary-lookups这样的功能等价物,是否有与上述编程结构完全相同的语法

python syntax pattern-matching switch-statement conditional-statements

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

PyGTK窗口始终位于所有"始终在顶部"窗口之上

我创建了一个PyGTK应用程序,需要始终在顶部.透明窗口将鼠标单击重定向到下面的窗口,因此一旦您进入底层窗口,就会失去焦点.这是预期的行为.事实上,它应该只显示一个总是高于一切的小图像.

除非您使用libreoffice全屏演示文稿,否则这种方法很有效.演示窗口也标记为always on top,因此我的窗口进入后台.即使我使用它Alt+Tab然后点击底层的libreoffice幻灯片(这是必要的),我的窗口再次进入后台.

这是一个非常具体的问题,解决方案应该适用于Linux和Windows.我不知道该怎么做.我刚刚发现很多关于如何always在顶部安装Windows的问题,但没有一个问题可以解决我的问题.

长话短说:我如何将窗口始终放在每个始终位于顶部的窗口的顶部?

python linux windows user-interface pygtk

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

android oreo上的永久服务

Android 8的电池消耗改进对用户来说很好,但是如果我的服务能按预期工作,我有点害怕.

首先:感谢您提出任何建议,但我不能安排我的服务.我想OK Google在后台运行一个类似的关键字监听器.它将基于开源的pocketsphinx-android库.我知道这会消耗很多电池电量,我会告诉用户这个.

我们可以在android 8+上创建一个永久的后台服务吗?我需要在gradle中定位android 8,因为我期待一些旧目标的bug.我也不想使用前台服务来惹恼用户,该服务会在状态栏中永久显示通知.

[ https://developer.android.com/about/versions/oreo/background.html] - 真的没有办法为我的用例(但最好是所有用例)提供永久性后台服务吗?

java service android kotlin android-8.0-oreo

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

使用 redis 和 python 进行故障安全消息广播,供特定接收者使用

所以redis 5.0新鲜推出了一个新功能,叫做Streams。它们似乎非常适合分发进程间通信的消息:

  • 它们在可靠性方面超越了 PUB/SUB 事件消息传递的能力:PUB/SUB 是即发即忘的,无法保证收件人会收到消息
  • redis 列表有点低级,但仍然可以使用。然而,流针对性能和上述用例进行了优化。

然而,由于这个功能相当新,几乎没有任何 Python(甚至通用的 redis)手册,而且我真的不知道如何使流系统适应我的用例。

我想要一个发布程序,将消息推送到流并包含收件人信息(如recipient: "user1")。然后我将有几个接收进程,所有进程都应该检查新的流消息并比较它们是否是目标接收者。如果是,他们应该处理该消息并将其标记为已处理(已确认)。

但是,我不太了解消费者群体、待处理状态等概念。有人能给我一个关于我的小伪代码的真实例子吗?

发件人.py

db = Redis(...)
db.the_stream.add({"recipient": "user1", "task": "be a python"})
Run Code Online (Sandbox Code Playgroud)

recipient.py(将有许多实例运行,每个实例都有一个唯一的收件人 ID)

recipient_id = "user1" # you get the idea...
db = Redis(...)
while True:
    message = db.the_stream.blocking_read("$") # "$" somehow means: just receive new messages
    if message.recipient == recipient_id:
        perform_task(message.task)
        message.acknowledge() # let the stream know it was processed
    else:
        pass # well, do nothing here since it's not our …
Run Code Online (Sandbox Code Playgroud)

python ipc stream redis redis-py

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