根据文档,Region和Pane都会将任何可调整大小的子节点的大小调整为其首选大小,但不会重新定位它们.
所以我看不出这两个容器之间的差异在何处以及何时使用这些差异.
我希望一组特定的Python子进程尽可能低影响.我已经使用nice来帮助限制CPU消耗.但理想情况下I/O也会受到限制.(如果持怀疑态度,请幽默我,并假设这样做有价值;无论运行多长时间都没关系,可能会有很多,并且有更高优先级的东西(通常)继续同一台机器等)
似乎有一种可能性ionice
.是否有任何现有的Python包用于调用ionice
(谷歌没有发现任何东西)?编写代码来简单地运行ionice
命令并不困难; 但我宁愿避免编写别人编写/测试的代码; 有时会有微妙的边缘情况等等.而且,是否有更好的方法来限制I/O消耗?
ionice的手册页表明该ionice
值可能会受到值的影响nice
,但运行此Python 2.6脚本似乎反驳了这一点,即使对于nice
继承了值的子进程:
#!/usr/bin/env python
import os
import multiprocessing
def print_ionice(name):
print '*** ', name, ' ***'
os.system("echo -n 'nice: '; nice")
os.system("echo -n 'ionice: '; ionice -p%d" % os.getpid())
for niced in (None, 19):
if niced: os.nice(niced)
print '**** niced to: ', niced, ' ****'
print_ionice('parent')
subproc = multiprocessing.Process(target=print_ionice, args=['child'])
subproc.start()
subproc.join()
Run Code Online (Sandbox Code Playgroud)
其中有以下输出:
$ uname -as Linux x.fake.org 2.6.27-11-server …
什么是最好的Python相当于Common Lisp的maplist
功能?从地图列表文档:
maplist与mapcar类似,不同之处在于该函数应用于列表的连续子列表.函数首先应用于列表本身,然后应用于每个列表的cdr,然后应用于每个列表的cdr的cdr,依此类推.
示例(伪代码,未测试):
>>> def p(x): return x
>>> maplist(p, [1,2,3])
[[1, 2, 3], [2, 3], [3]]
Run Code Online (Sandbox Code Playgroud)
注:传递给的参数p
在上面的例子中会列表[1, 2, 3]
,[2, 3]
,[3]
,即,p
不适用于这些列表的元素.例如:
>>> maplist(lambda l: list(reversed(l)), [1,2,3])
[[3, 2, 1], [3, 2], [3]]
Run Code Online (Sandbox Code Playgroud) 使用SQLAlchemy从客户端运行MySQL数据库时,控制超时的正确方法是什么?该connect_timeout
URL参数似乎是不够的.
我对运行数据库的机器发生的事情更感兴趣,例如,意外地从网络中消失.我并不担心查询本身需要太长时间.
如果somehost 在到达while
循环之前不可用,则以下脚本执行您期望的操作(即,大约一秒后超时).但是,如果,某下降过程中的while
循环(例如,尝试唬弄了其网线循环开始后),然后超时似乎至少需要18秒.我缺少一些额外的设置或参数吗?
wait_timeout
会话变量不起作用并不奇怪,因为我认为这是一个服务器端变量.但我把它扔在那里只是为了确保.
from sqlalchemy import *
from sqlalchemy.exc import *
import time
import sys
engine = create_engine("mysql://user:password@somehost/test?connect_timeout=1")
try:
engine.execute("set session wait_timeout = 1;")
while True:
t = time.time()
print t
engine.execute("show tables;")
except DBAPIError:
pass
finally:
print time.time() - t, "seconds to time out"
Run Code Online (Sandbox Code Playgroud) 有没有人有经验可以使用MySQL 保存点(直接或通过ORM)共享,特别是在非平凡的Web服务中?你在哪里实际使用过它们?它们是否足够可靠(假设您愿意运行相当新版本的MySQL)或过于尖端或昂贵?
最后,是否有人有类似以下用例的经验并且您是否使用了保存点?假设某个特定工作单元的要点是在一个Orders
表中添加一行(或者其他什么,当然不必与订单相关)并OrdersAuditInfo
在同一事务中更新表.必要时Orders
尽可能更新,但OrdersAuditInfo
表不是必需的(例如,只需将错误记录到文件中,但继续整个事务处理).在低级别它可能看起来像这样(警告,伪SQL跟随):
BEGIN;
INSERT INTO Orders(...) VALUES (...);
/* Do stuff outside of SQL here; if there are problems, do a
ROLLBACK and report an error (i.e., Order is invalid in this
case anyway). */
SAVEPOINT InsertAudit;
INSERT INTO OrdersAudit(...) VALUES(...);
/* If the INSERT fails, log an error to a log file somewhere and do: */
ROLLBACK TO SAVEPOINT InsertAudit;
/* Always want to commit the INSERT INTO Orders: …
Run Code Online (Sandbox Code Playgroud) mysql database web-services transactions nested-transactions
我有一个长期运行的Python服务,我想知道等待GIL的任何可运行线程(即,由于某些其他原因未被阻止的线程)花费了多少累积挂钟时间.是否有捷径可寻?例如,也许我可以定期将一些计数器转储到其日志文件中.
我的潜在动机是排除GIL作为这些长期运行过程中神秘响应延迟的来源.没有特别的理由怀疑GIL(除了它适合症状),但其他形式的日志记录还没有发现任何东西,因此,如果它很容易,那么拥有这些信息会很好.
什么是sqlite等价的INTERVAL
和UTC_TIMESTAMP
?例如,假设您将以下SQL从MySQL"移植"到sqlite:
SELECT mumble
FROM blah
WHERE blah.heart_beat_time > utc_timestamp() - INTERVAL 600 SECOND;
Run Code Online (Sandbox Code Playgroud) 当我在emacs中从Swank repl运行Clojure代码时,主线程将使用printf将消息打印到repl.但是如果我运行代理或显式创建其他也打印的线程,有时输出不会显示,有时它会显示在我运行Swank的控制台窗口中.我很想知道为什么.
编辑:感谢丹尼尔的回答下面我现在知道了其他线程不必了绑定到REPL的输出.此代码有效,因为您从运行的位置传出.但是我的新问题是这个代码现在阻塞每个线程,所以不是并行运行,而是每次运行一个线程,所以我需要一个更多线程感知的输出方法.
(defn sleeper-thread [out id t]
"Sleep for time T ms"
(binding [*out* out]
(printf "%d sleeping for time %d\n" id t)
(Thread/sleep t)
(printf "%d slept\n" id)))
(defn test-threads [n out]
(dotimes [x n]
(.start (Thread. (#(sleeper-thread %1 %2 %3) out x (+ 2000 (rand-int 5000)))))))
Run Code Online (Sandbox Code Playgroud) 我有一种情况,我必须根据请求创建N个 Observable
对象.我知道我可以zip
用来组合一定数量的Observables.但是,我试图理解如何组合未知数量的Observable.
我不清楚的部分是传递给哪些功能zip
.根据Observable的数量,我必须创建一个带有N个参数的lambda .
所有Observable都返回不同类型的对象.
任何有经验的Erlang程序员都会推荐关联记录吗?
一种情况可能是不同机器上的两个(或更多)节点正在交换消息.我们希望能够独立升级每台机器上的软件.某些升级可能涉及向正在发送的一个(或多个)消息添加字段.似乎使用记录,因为消息意味着你总是必须在锁定步骤中对两台机器进行升级,以便额外的字段不会导致接收器忽略记录.然而,如果您使用类似关联列表(仍然具有"类似记录"API)的内容,尚未升级的接收器仍将成功接收消息并忽略新字段.我意识到这并不总是理想的行为,但往往是这样.此外,假设消息相当小,因此查找时间无关紧要.
假设上述内容有一定道理,我还有以下其他问题:
python ×4
mysql ×3
java ×2
asynchronous ×1
clojure ×1
concurrency ×1
database ×1
erlang ×1
java-ee ×1
javafx ×1
javafx-2 ×1
linux ×1
lisp ×1
performance ×1
printf ×1
rx-java ×1
slime ×1
sqlalchemy ×1
sqlite ×1
transactions ×1
unix ×1
web-services ×1