小编Tre*_*reg的帖子

通过KeyboardInterrupt停止pyzmq接收器

按照ØMQ文档中的这个例子,我正在尝试创建一个简单的接收器.该示例使用无限循环.一切正常.但是,在MS Windows上,当我按CTRL + C来引发KeyboardInterrupt时,循环不会中断.似乎该recv()方法以某种方式忽略了异常.但是,我想通过点击CTRL + C而不是杀死它来退出该过程.那可能吗?

python loops termination break pyzmq

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

Redis中的事务与读取操作

使用Redis,我想执行一个原子序列的命令,即我需要保证在执行序列时没有其他客户端会在数据库中执行更改.

如果我只使用write命令,我可以使用MULTI和EXEC语句来确保使用事务的原子性.但是,我还想在我的事务中使用read命令.因此我无法使用MULTI,因为读命令也在排队!

基本上,以原子方式,我需要做以下事情:

  1. x从数据库中读取,
  2. 基于x,存储f(x)到数据库.

1.和2.都应该是单个原子事务的一部分.

有一个简单的方法怎么做?

transactions atomicity redis

6
推荐指数
1
解决办法
2061
查看次数

使用Python的csv.reader处理转义的引号

使用python的csv模块,我正在尝试读取一些CSV数据.

我正在使用代码:

dialect = csv.Sniffer().sniff(csv_file.read(1024))
csv_file.seek(0)
reader = csv.reader(csv_file, dialect)

for line in reader:
    ...
Run Code Online (Sandbox Code Playgroud)

除了包含转义引号的行外,一切正常:

11837,2,NULL,"\"The Take Over, The Breaks Over\"","Fall Out Boy"
Run Code Online (Sandbox Code Playgroud)

这样的行被标记为:

['11837', '2', 'NULL', '\\The Take Over', ' The Breaks Over\\""', 'Fall Out Boy']
Run Code Online (Sandbox Code Playgroud)

方言包含以下属性:

dialect.quotechar = "
dialect.quoting = 0
dialect.escapechar = None
dialect.delimiter = ,
dialect.doublequote = False
dialect.lineterminator = \n
Run Code Online (Sandbox Code Playgroud)

除了编写自己的CSV解析器之外,还有什么可以做的吗?

python csv quotes escaping

6
推荐指数
1
解决办法
4786
查看次数

JSON使用Python的ujson模块转储非数字浮点数

我正在尝试使用ujsonPython3中的模块序列化数字.一些值是NaNs.

使用标准json模块时,一切正常.

import json
json.dumps(float('NaN'))
Run Code Online (Sandbox Code Playgroud)

得到:

'NaN'
Run Code Online (Sandbox Code Playgroud)

但是有一个问题ujson.

import ujson
ujson.dumps(float('NaN'))
Run Code Online (Sandbox Code Playgroud)

抛出异常:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: Invalid Nan value when encoding double
Run Code Online (Sandbox Code Playgroud)

我ujson出于性能原因使用.我是否必须用NaN字符串替换我的结构中的所有出现'NaN',或者有没有办法告诉ujson处理NaNs而不抛出异常?

我对无穷大也有同样的问题.我无法找到任何相关的文档.

python json dump nan infinity

6
推荐指数
1
解决办法
1520
查看次数

PostgreSQL information_schema.tables 和 TRANSACTION ISOLATION LEVEL

在 PostgreSQL 中,我面临着竞争条件。我的表和模式可能会被系统中的单独进程删除。如果模式和表存在,则使用习语,然后读取内容因此通常不起作用,因为表可能会在语句的中间不再存在。

我不明白的一件事是为什么SET TRANSACTION ISOLATION LEVEL SERIALIZABLE没有帮助。我想我可能希望在我的事务期间有一致的模式和表视图,但我没有。下面是我的Java代码:

pgConnection = DriverManager.getConnection(/* ... */);
pgConnection.setAutoCommit(false);

PreparedStatement statement = pgConnection.prepareStatement(
                                 "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;");
statement.execute();

statement = pgConnection.prepareStatement(
               "SELECT ('myschema','config') IN " +
               "(SELECT table_schema,table_name FROM information_schema.tables);");

ResultSet result = statement.executeQuery();
result.next();
if(result.getBoolean(1)) {
    statement = pgConnection.prepareStatement("SELECT key,value FROM myschema.config;");

    result = statement.executeQuery();  // here I'm often getting an exception

    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

我得到的例外是:

org.postgresql.util.PSQLException: ERROR: relation "myschema.config" does not exist
Run Code Online (Sandbox Code Playgroud)

这怎么可能?我认为ISOLATION LEVEL …

java postgresql transactions race-condition

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

在实时系统中控制Java垃圾收集

我们正在用 Java 运行一个 RT 系统。它通常使用相对较大的堆(100+GB)并为来自消息队列的请求提供服务。必须快速处理每个请求(<100 毫秒)以满足 SLA。

我们遇到了严重的 GC 相关问题,因为经常发生 GC 在请求期间(200+ms)导致 stop-the-world 收集,从而导致失败。

我们的一位对 GC 有一定了解的开发人员花了相当多的时间来调整 GC 参数并尝试不同的 GC。几天后,他提出了一些我们戏称为“由遗传算法进化”的参数化方法。它降低了 GC 暂停,但仍远未满足 SLA 要求。

我正在寻找的解决方案是保护代码的一些关键部分免受 GC 的影响,并且在请求完成后,让 GC在接受下一个请求之前根据需要做尽可能多的工作。请求之外的偶尔暂停是可以的,因为我们有几个工作人员,垃圾收集工作人员暂时不会请求请求。

我有一些愚蠢、丑陋且很可能不起作用的想法,但希望它们能说明问题:

  • 偶尔调用Thread.sleep()接收线程,祈祷GC在此期间做一些工作,
  • 调用System.gc()或Runtime.gc()请求之间,再次绝望地祈祷它提供帮助,
  • 使用像/sf/answers/484065501/这样的黑客模式完全弄乱代码。

最后一个重要说明是,我们是一家低预算的初创公司,Zing®等商业解决方案不适合我们,我们正在寻找非商业解决方案。

有任何想法吗?我们会将我们的代码完全重写为 C++(我们一开始并不知道 GC 可能是一个问题而不是解决方案),但是代码库已经太大而无法这样做。

java garbage-collection real-time heap-memory

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

在 PostgreSQL 中对 NULL 值进行排序

在 PostgreSQL 中,我使用ORDER BY各种类型的列(NUMERIC、TEXT、BOOLEAN、TEXT[])。我正在设计一个 AJAX GUI,用户可以在其中以交互方式按各个列对记录进行排序(按升序和降序排列,在表标题中使用熟悉的 \xe2\x96\xb2\xe2\x96\xbc 符号)。

\n\n

问题是某些行包含NULL值。一般来说,这样的行很少(100/10000),并且它们大部分包含我不愿意隐藏的错误数据,但也不愿意显示太多。我想要的是NULL使用时值始终落在列表的末尾ORDER BY(用户只有在导航到分页的最后一页时才会看到它们),无论顺序是降序还是升序。

\n\n

例如,对于数字属性,我发现NULL值似乎被认为是最大的,因此在降序排序时出现在列表的顶部。这正是我不想要的。

\n\n

我带来了一个丑陋的黑客,我羞于展示它,但会完成工作(在 python 中):

\n\n
"COALESCE(value, \'%sINFINITY\')" % (\'-\' if sort_order == \'descending\' else \'\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果这个丑陋的家伙足够通用的话,我会把它保留在我的代码中。但显然不是。它适用于整数、双精度数和时间戳,但不适用于文本、布尔值等。仅仅是因为没有(至少我没有找到任何)最大字符串常量大于所有其他字符串,例如无穷大是所有数字中最大的。事实上,我可以输入\'ZZZZZ\'代码,但这显然非常不卫生,所以我决定在这里询问:)

\n\n

还有其他优雅的方式来做我想做的事吗?

\n

sql sorting postgresql null sql-order-by

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

大型查询上的 Java PostgreSQL 错误:发送到后端时发生 I/O 错误

在 Java 中,使用java.sql.PreparedStatement,我试图提交一个相当大的查询,其中包含(VALUES (?), (?), (?)...)用于有效连接的常量表达式。

有 cca​​ 250K 值,所以我也设置了 250K 参数。

在 Java 中,我得到

org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.
Run Code Online (Sandbox Code Playgroud)

在我的服务器 PostgreSQL 日志中,有一行关于该错误:

incomplete message from client
Run Code Online (Sandbox Code Playgroud)

关于我可以在任何地方更改以使我的大型查询工作的某些设置的任何想法?

java postgresql limits jdbc

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

Python理解中是否需要局部变量?

在Python 3.x中,我调用的函数rand_foo()在每次调用时返回一些随机的东西.我希望将随机结果序列存储到列表中.我正在使用以下构造:

r = [ rand_foo() for i in range(10) ]
Run Code Online (Sandbox Code Playgroud)

现在我的PyCharm 3.0 IDE会发出警告:Local variable 'i' value is not used.

是否有一种优雅的方法来删除不必要的变量?实际上,在某些情况下,我可以使用itertools.repeat()或类似的东西10*[value],然而,这不能应用于我上面的例子.

python warnings list-comprehension

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