我正在尝试创建一个具有事件循环的GUI框架.一些线程来处理UI,一些线程用于事件处理.我搜索了一下,找到了这三个库,我想知道哪一个更好用?优缺点都有什么?
我可以使用这三个库中的一个,甚至可以使用python 线程或并发库为自己创建一些东西.
我希望分享任何经验,基准和比较.
我有一个使用flask-SQLAlchmey的烧瓶应用程序.我有这样的数据库模型
from sqlalchemy.dialects.postgresql import JSON
from flask.ext.sqlalchemy import SQLAlchemy
Run Code Online (Sandbox Code Playgroud)
...
db = SQLAlchemy()
Run Code Online (Sandbox Code Playgroud)
...
class Custom(db.Model):
__tablename__ = 'custom'
...
data = db.Column(JSON)
...
Run Code Online (Sandbox Code Playgroud)
数据字段是这样的:
[{"type": "a string", "value": "value string"}, {"type": "another", "value": "val"}, ...]
我想查询其数据包含的所有自定义对象.{"type": "anything", "value": "what I want"}
我遇到过很多情况,我需要编写类似于此代码片段的代码。我想知道是否有更短的方法可以做到这一点?
loop {
let res = match do() {
Ok(res) => res,
Err(e) => {
eprintln!("Error: {}", e);
continue;
}
}
// Do stuff with `res` ...
}
Run Code Online (Sandbox Code Playgroud)
或者
fn some_fn() {
let res = match do() {
Some(res) => res,
None => {
eprintln!("Error: not found");
return;
}
}
// Do stuff with `res` ...
}
Run Code Online (Sandbox Code Playgroud)
我一直在寻找类似?关键字的东西,以便在出现错误时尽早返回,但在函数不返回任何内容的情况下,如果结果是None/ ,我只想不返回任何内容Error。
也许是这样的:
loop {
do().unwrap_or_log(|e| eprintln("{}", e).continue // :D
}
Run Code Online (Sandbox Code Playgroud)
考虑do()永远不会这么短。它可能是一些已经太长的函数调用链。
也许我这样做的方式是唯一的方法,或者也许我做错了什么,导致这样做,而我不应该这样做!?
我有一个 ??struct Base:
type Base struct {
Name string `json:"name,omitempty"`
// ... other fields
}
Run Code Online (Sandbox Code Playgroud)
还有两个嵌入的结构Base:
type First struct {
Base
// ... other fields
}
type Second struct {
Base
// ... other fields
}
Run Code Online (Sandbox Code Playgroud)
现在我想对结构进行编组First,Second但有一点不同。我想将该Name字段包含在其中,First但我不想将其包含在Second.
或者为了简化这个问题,我想动态地在其 JSON 中选择加入和退出结构的字段。
注意:Name值总是有价值的,我不想改变它。
我想知道 python 线程是并发运行还是并行运行?
例如,如果我有两个任务并在两个线程中运行它们,它们是同时运行还是计划并发运行?
我知道GIL并且线程只使用一个 CPU 内核。
python ×3
concurrency ×1
eventlet ×1
gevent ×1
go ×1
greenlets ×1
json ×1
postgresql ×1
rust ×1
sqlalchemy ×1
struct ×1