小编ʞɔı*_*ɔıu的帖子

在python中基本类型的轻量级泡菜?

我想要做的就是序列化和反序列化字符串或整数元组.

我查看了pickle.dumps(),但字节开销很大.基本上它看起来占用了大约4倍的空间.此外,我需要的只是基本类型,不需要序列化对象.

marshal在空间方面稍好一些,但结果却充满了令人讨厌的\ x00字节.理想情况下,我希望结果是人类可读的.

我想过只使用repr()和eval(),但是有一种简单的方法可以在不使用eval()的情况下实现这一点吗?

这将存储在数据库中,而不是文件中.字节开销很重要,因为它可以在需要TEXT列和varchar之间产生差异,通常数据紧凑性会影响db性能的所有区域.

python serialization pickle

7
推荐指数
4
解决办法
2414
查看次数

stderr的python的默认编码?

我有一个嘈杂的python脚本,我想通过将其stderr输出指向/ dev/null(使用bash BTW)来保持沉默.

像这样:

python -u parse.py  1> /tmp/output3.txt 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

但它很快就会过早退出.嗯.我无法看到追溯因为当然与stderr一起出现了.如果我不指示某个地方的stderr,它会吵闹地运行.

因此,让我们尝试将其重定向到某个地方的文件而不是/ dev/null,并查看它的输出内容:

python -u parse.py  1> /tmp/output3.txt 2> /tmp/foo || tail /tmp/foo

Traceback (most recent call last):
  File "parse.py", line 79, in <module>
    parseit('pages-articles.xml')
  File "parse.py", line 33, in parseit
    print >>sys.stderr, "bad page title", page_title
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

因此,正在生成的stderr包含utf8,并且由于某种原因,python在被重定向时拒绝打印非ascii,即使它被定向到/ dev/null(当然python当然不知道).

即使它包含utf8,我如何使python脚本的stderr静音?有没有办法在没有重写这个脚本中的每个打印到stderr?

python unicode bash shell

7
推荐指数
1
解决办法
3412
查看次数

如何限制mysqldump使用的带宽

我必须通过没有那么多带宽的网络管道转储大型数据库,而其他人需要同时使用.如果我尝试它,它会吸收所有带宽和延迟,并且其他所有人都会搞砸.

我知道mysqldump的--compress标志有点帮助.

如何在不通过此连接吸收所有带宽的情况下执行此操作?

更新:

使用带有-l标志的scp复制转储文件的建议是一个很好的建议,但我应该注意,我没有对数据库服务器的SSH访问权限.

mysql linux networking large-data-volumes

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

概率哈希 - 有这样的事吗?

假设您要实现一个点击跟踪器,您只需要从任意IP地址计算一次点击链接,但链接和客户端的数量非常大,您不希望保留每个IP的表格 - 单击.假设您可能需要将此作为针对每次点击运行的内容的一部分,并且不希望针对每次点击对大表进行查找.

是否存在"概率哈希"或"有损哈希"这样的事情,看看IP是否可能在一个集合中但你不关心是否存在某种错误率,因为你想节省资源?

algorithm data-structures

6
推荐指数
3
解决办法
2529
查看次数

innodb b-tree中的内部节点如何物理存储?

如何在innodb中物理表示非叶子 b树节点?

回想一下,b树(更具体地说是b +树)具有叶节点和非叶节点.在b +树中,所有叶节点都位于非叶子或"内部"节点的树下面,并指向实际包含行数据的页面.

我知道非叶节点存储在非叶节点段中,并使用类似数据页的页面.我已经找到了关于如何物理存储数据页面的大量文档,但是我无法找到关于非叶索引页面的内容.

mysql tree innodb b-tree

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

为什么这个MySQL触发器会导致堆栈溢出?

我认为有人试图模拟第二个auto_increment值.刚升级到MySQL 5.5.9

CREATE TABLE `job_title` (
  `job_id` int(11) NOT NULL AUTO_INCREMENT,
  `position_id` int(11) DEFAULT NULL,
  `title` varchar(255) COLLATE latin1_general_cs NOT NULL,
  `selectable` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`job_id`),
  UNIQUE KEY `title` (`title`)
) ENGINE=InnoDB;

create trigger job_position_trigger
  before insert on job_title for each row
 begin
   if new.position_id is null then 
     set @position = (select max(position_id)+1 from job_title);
     set new.position_id = @position;
   end if;
 end
Run Code Online (Sandbox Code Playgroud)

错误: Thread stack overrun: 9024 bytes used of a 131072 byte stack, and 128000 …

mysql sql triggers

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

为什么这个grep过滤器很慢?

我想获得BSD词典单词列表中每个单词的前两个字母,不包括那些只以一个字母开头的单词.

没有单字母排除,它运行速度非常快:

time cat /usr/share/dict/web2 | cut -c 1-2 | tr '[a-z]' '[A-Z]' | uniq -c > /dev/null

real    0m0.227s
user    0m0.375s
sys 0m0.021s
Run Code Online (Sandbox Code Playgroud)

..然而,在' ' 上gre is很痛苦:

time cat /usr/share/dict/web2 | cut -c 1-2 | grep '..' | tr '[a-z]' '[A-Z]' | uniq -c > /dev/null

real    1m16.319s
user    1m0.694s
sys 0m10.225s
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

regex unix command-line grep

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

python方法窃取者

我怎样才能"窃取"或将方法从一个类复制到另一个类?

示例代码:

class A(object):
  def foo(self):
    print "blah"


class B(object):
  foo = A.foo

B().foo()
Run Code Online (Sandbox Code Playgroud)

预期产量:

"blah"
Run Code Online (Sandbox Code Playgroud)

代替:

TypeError:必须使用A实例作为第一个参数调用未绑定方法foo()(没有任何内容)

python oop

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

告诉python是否处于-i模式

你怎么知道python是否已经用-i标志启动了?

根据文档,您可以检查os.environ中的PYTHONINSPECT变量,该变量相当于 -i.但显然它不会以同样的方式工作.

作品:

$ PYTHONINSPECT=1 python -c 'import os; print os.environ["PYTHONINSPECT"]'
Run Code Online (Sandbox Code Playgroud)

不起作用:

$ python -i -c 'import os; print os.environ["PYTHONINSPECT"]'
Run Code Online (Sandbox Code Playgroud)

我问的原因是因为我有一个脚本,如果某些条件失败,则调用sys.exit(-1).这很好,但有时我想使用-i手动调试它.我想我可以学习使用"PYTHONINSPECT = 1 python"而不是"python -i",但如果有一种通用的方法可以做到这一点会很好.

python

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

机器学习挑战:学习英语发音

假设您要采用CMU的语音数据集输入,如下所示:

ABERRATION  AE2 B ER0 EY1 SH AH0 N
ABERRATIONAL  AE2 B ER0 EY1 SH AH0 N AH0 L
ABERRATIONS  AE2 B ER0 EY1 SH AH0 N Z
ABERT  AE1 B ER0 T
ABET  AH0 B EH1 T
ABETTED  AH0 B EH1 T IH0 D
ABETTING  AH0 B EH1 T IH0 NG
ABEX  EY1 B EH0 K S
ABEYANCE  AH0 B EY1 AH0 N S
Run Code Online (Sandbox Code Playgroud)

(单词在左边,右边是一系列音素,在此处输入键

您想将其用作机器学习系统的训练数据,该系统将使用新单词并猜测它们将如何用英语发音。

至少对我来说不是那么明显,因为没有固定大小的字母可以映射到音素。我觉得与马尔可夫链有关的事情可能是正确的方法。

你会怎么做?

machine-learning phonetics

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