小编Kni*_*nio的帖子

Python JSON序列化一个Decimal对象

我有一个Decimal('3.9')对象的一部分,并希望将其编码为一个看起来像的JSON字符串{'x': 3.9}.我不关心客户端的精度,所以浮动很好.

是否有一种很好的方法来序列化这个?JSONDecoder不接受Decimal对象,并且事先转换为float会产生{'x': 3.8999999999999999}错误,并且会大大浪费带宽.

python floating-point json decimal

207
推荐指数
12
解决办法
17万
查看次数

clone()/ fork()/进程创建在某些机器上很慢

在我的一些机器上创建新进程非常慢,而在其他机器上则不然.

这些机器都很相似,有些慢速机器在同一硬件和内核(2.6.32-26,Ubuntu 10.04)上运行与一些快速机器完全相同的工作负载.不涉及创建流程的任务在所有计算机上的速度相同.

例如,该程序在受影响的计算机上执行速度慢约50倍:

int main()
{
    int i;
    for (i=0;i<10000;i++)
    {
        int p = fork();
        if (!p) exit(0);
        waitpid(p);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

什么可能导致任务创建速度慢得多,以及我可以在机器中寻找其他差异?

Edit1:运行bash脚本(因为它们产生了很多子进程)在这些机器上运行速度也非常慢,并且对慢速脚本的分析显示了clone()内核调用的减速.

Edit2:vmstat在快速与慢速机器上没有显示任何显着差异.它们都有足够的RAM用于工作负载,而不是交换.

编辑3:我没有看到任何可疑的内容 dmesg

编辑4:我不知道为什么现在这是在stackoverflow上,我不是在问上面的示例程序(只是用它来演示问题),而是linux管理/调优,但如果人们认为它属于这里,很酷.

linux ubuntu performance kernel

9
推荐指数
1
解决办法
3416
查看次数

Python ctypes对SWIG的回调函数

我有一个SWIG C++函数,需要一个函数指针(WNDPROC),并希望给它一个由ctypes.WINFUNCTYPE包装的Python函数.

在我看来,这应该兼容,但SWIG的类型检查会引发异常,因为它不知道ctypes.WINFUNCTYPE类型实际上是WNDPROC.

我可以做些什么来将我的回调传递给SWIG,以便它理解它?

c++ python swig ctypes

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

SqlAlchemy:如何在mysql中创建LONGBLOB列?

结合使用sqlalchemy和mysql-python,我有此表:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Index, LargeBinary
Base = declarative_base()
class Tbl(Base):
     __tablename__ = 'tbl'
     ...
     data = Column(LargeBinary())
Run Code Online (Sandbox Code Playgroud)

但是,当我创建该表(使用Base.metadata.create_all(engine)),然后DESCRIBE tbl;在mysql中时,得到以下信息:

mysql> describe logs;
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
...
| data         | blob        | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

预期结果:我希望这是longblobmysql中的一个,而不是blob限于64kB的一个

python mysql sqlalchemy

4
推荐指数
2
解决办法
1321
查看次数

Python ctypes地址的CFuncType

与我的其他问题有关

如何获取CFuncType对象的地址(acctual函数指针)?addressof()不报告正确的地址.

C代码:

extern "C" _declspec(dllexport)
int addr(int (*func)())
{
    int r = (int)func;
    return r;
}
Run Code Online (Sandbox Code Playgroud)

Python代码:

def test():
  return 42

t = CFUNCTYPE(c_int)
f = t(test)

print addressof(f)
print dll.addr(f)
Run Code Online (Sandbox Code Playgroud)

输出:

7030864
3411932
Run Code Online (Sandbox Code Playgroud)

试图从C调用*(7030864)导致崩溃,但调用*(3411932)按预期工作.addressof()有什么问题?

python ctypes

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

Pandas DataFrame.plot 重置 pyplot 当前图形

我正在尝试使用 pandas 来绘制特定的图形,但它似乎想要制作自己的图形而不是使用/重置 pyplot 的当前图形。

如何使 pandas 绘制到当前(或者更好的是,明确给出的)数字?

from matplotlib import pyplot
import pandas

df = pandas.DataFrame({'a': list(range(1000))})
fig1 = pyplot.figure(figsize=(5, 10))
assert pyplot.gcf() is fig1 # succeeds
df.plot() # does not draw to fig1
assert pyplot.gcf() is fig1 # fails
Run Code Online (Sandbox Code Playgroud)

python matplotlib dataframe pandas

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