小编Bas*_*asj的帖子

Nohup和Python -u:它仍然不会实时记录数据

在后台启动Python进程时,用

nohup python myscript.py > test.log 2>&1 < /dev/null &
Run Code Online (Sandbox Code Playgroud)

问题是stdout缓冲:数据不是实时写入的test.log.以常见的解决办法这个问题是定时冲洗用sys.stdout.flush(),甚至更好,因为提出这个答案,使用python -u:

nohup python -u myscript.py > test.log 2>&1 < /dev/null &
Run Code Online (Sandbox Code Playgroud)

但这还不够.我注意到它在几个小时内工作,然后,它停止工作,即几个小时后test.log不再实时写入,即使我使用过nohup python -u ....

1)这是如何重现问题(我有一个标准的Debian Jessie).启动此文件:

import time
import datetime
while True:
    print datetime.datetime.now()
    time.sleep(60)
Run Code Online (Sandbox Code Playgroud)

与nohup python -u myscript.py > test.log 2>&1 < /dev/null &.日志文件将在几个小时内更新,然后在3或4小时后更新,不再有任何内容.

2)如何解决这个问题,而不必stdout.flush()在代码中插入每两行(丑陋的解决方案)?

python stdout nohup

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

大熊猫指数之间的时差

我想计算连续数据行的时间戳之间的差异.

为什么这项工作,为解释在这里:

df['tvalue'] = df.index
print df['tvalue'].shift() - df['tvalue']
Run Code Online (Sandbox Code Playgroud)

但不是

print df.index.shift() - df.index
Run Code Online (Sandbox Code Playgroud)

哪个产生ValueError: Cannot shift with no freq?

问题是工作解决方案使时间戳所需的内存大小加倍; 这对于庞大的数据帧来说是个问题.

python dataframe pandas

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

使用Sqlite将自动增量ID列添加到现有表

使用Sqlite,我想将一个自动递增ID列添加到以前没有ID的现有表中:

import sqlite3
db = sqlite3.connect(':memory:')
c = db.cursor()

c.execute('create table events (int weight, text str)')
c.execute('insert into events values(?, ?)', (1371, 'Test1'))
c.execute('insert into events values(?, ?)', (223, 'Test2'))
c.execute('select * from events'); print c.fetchall()
# [(1371, u'Test1'), (223, u'Test2')]

# add an autoincrementing ID to existing table
c.execute('alter table events add id int not null auto_increment primary key')
Run Code Online (Sandbox Code Playgroud)

怎么做得好?我有这个错误:

sqlite3.OperationalError:"auto_increment"附近:语法错误

python sql sqlite

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

如果有可用空间,请添加水平边距

如果有可用空间,我想添加 40px 的左边距。如果父宽度不够,我们就减小它。

示例:如果父级只有 420 像素宽,则边距应减少到 20 像素。

这个怎么做?

* {margin: 0; padding: 0;}
#parent {resize: both; border: 2px solid; overflow:auto; width: 500px; }
#margin { display: inline-block; background-color: blue; width: 40px; }
#main { display: inline-block; background-color: red; width: 400px; }
Run Code Online (Sandbox Code Playgroud)
<div id="parent">
<div id="margin">&nbsp;</div>
<div id="main">&nbsp;</div>
</div>
Run Code Online (Sandbox Code Playgroud)

css

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

将浮点数组渲染为24位RGB图像(例如,使用PIL)

x是一个numpy.float32数组,使用来自值-200到0.这些是dB(分贝)值.

当我这样做时(按照此处的建议):

Image.fromarray(x, mode='F')
Run Code Online (Sandbox Code Playgroud)

我得到一个灰度或有时几乎是黑色的图像.

如何将[-200,0]中的float映射到24位RGB字节数组(使用色彩映射),可以使用Python模块PIL读取Image.fromarray(x, mode='RGB')?


编辑:

所需的.wav音频文件是在这里,为此我们要绘制的频谱.

这是一些要测试的代码:

import scipy, numpy as np
import scipy.io.wavfile as wavfile
import numpy as np
from PIL import Image

def stft(x, fftsize=1024, overlap=4): 
    hop = fftsize / overlap
    w = scipy.hanning(fftsize+1)[:-1]
    return np.array([np.fft.rfft(w*x[i:i+fftsize]) for i in range(0, len(x)-fftsize, hop)])

def dB(ratio):
    return 20 * np.log10(ratio+1e-10)

def magnitudedB(frame, fftsize=1024):
    w = scipy.hanning(fftsize+1)[:-1]
    ref = np.sum(w) / 2
    return …
Run Code Online (Sandbox Code Playgroud)

python numpy spectrogram python-imaging-library colormap

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

*.*在C中的argv [1]中

背景:某些Windows命令行程序允许*.*在第一个参数中使用:

myprogram *.*
Run Code Online (Sandbox Code Playgroud)

并将自动循环目录的所有文件.

其他一些则没有,因此需要批处理循环:

for %%c in ("*.*") do myprogram "%%c"
Run Code Online (Sandbox Code Playgroud)

问题:是否有标准方式(在C语言中定义或OS提供?)允许*.*或*.txt在参数中,以便它自动对相关文件进行处理?

int main(int argc, char *argv[])
{
    FILE *kf;

    "for fname in argv[1]"    // pseudo code here meaning: 
                              // let's loop on all files described by the first argument
    {
        kf = fopen(fname, "rb");
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我想检查一个解决方案是否存在,然后滚动我自己(重新发明通配符扩展的轮子,使用FindFirstFile等)

c windows filesystems filenames wildcard

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

使用 plt.imshow 实现更快的刷新率

我想在进行计算时显示一些图像numpy:

import numpy as np
import matplotlib.pyplot as plt
plt.ion()  # Turn the interactive mode on.
for i in range(100):
    A = np.random.randn(10,10)
    plt.imshow(A)
    plt.pause(0.001)
    # do some other numpy computations here (they take < 1 ms)
Run Code Online (Sandbox Code Playgroud)

显示图像不是很快,而是相当慢。

我并不是要求每秒 100 帧,但我认为 30 fps 是可能的,但事实并非如此:经过几次迭代后,我在标准 i5 笔记本电脑(Windows 7 x64)上接近 2 fps。

如何拥有更快的imshow刷新率?

笔记:

  • 我已经尝试过Fast Live Plotting in Matplotlib / PyPlot的主要答案,但对于blit这样一个简单的任务来说,这似乎是一个复杂的方法(使用参数),而且我也没有得到 28 fps 而只有 15 fps。

  • 我只想将矩阵显示为图像:没有边框,没有轴,没有子图等,我想这可以比解决方案Fast Live Plotting …

python numpy matplotlib imshow

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

NTFS是否存储每个inode/文件的哈希值或CRC32,如何访问它?

我知道如何读取文件,将这些字节传递给哈希算法(例如 MD5SUM、SHA256 或 CRC32),并获取哈希值。

在这里我问的问题略有不同:

每次我们在 NTFS 分区上写入/修改文件时,它是否会重新计算哈希或 CRC32 并将此信息存储在 NTFS 元数据/FAT/MFT(主文件表)中(我不记得确切的名称)?

注意:重要的是我只想读取存储在文件系统中的存储哈希/CRC(即读取几个字节,最多应该是几毫秒),而不是重新计算哈希(这将花费很多秒来计算 10 GB 文件)。


如果是这样,如何使用 Python 访问特定文件的 CRC 或哈希值?有没有类似的东西:

import ntfsutil
ntfsutil.getCRC('d:/big50GBfile.dat')  # done in < 10 ms
Run Code Online (Sandbox Code Playgroud)

python windows filesystems ntfs ntfs-mft

5
推荐指数
0
解决办法
2278
查看次数

Python 中的滚动哈希非常快?

我正在rsync用 Python 编写一个类似玩具的工具。与许多类似的工具一样,它首先使用非常快的哈希作为滚动哈希,然后在找到匹配项后使用 SHA256(但后者不在此处的主题:SHA256、MDA5 等作为滚动哈希太慢)哈希)。

我目前正在测试各种快速哈希方法:

import os, random, time

block_size = 1024  # 1 KB blocks
total_size = 10*1024*1024  # 10 MB random bytes
s = os.urandom(total_size)

t0 = time.time()
for i in range(len(s)-block_size):
    h = hash(s[i:i+block_size])
print('rolling hashes computed in %.1f sec (%.1f MB/s)' % (time.time()-t0, total_size/1024/1024/(time.time()-t0)))
Run Code Online (Sandbox Code Playgroud)

我得到:0.8 MB/s ...所以Python内置hash(...)函数在这里太慢了。

哪种解决方案可以在标准机器上实现至少 10 MB/s 的更快哈希值?

python hash for-loop sha256 rolling-computation

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

直接在线运行Jupyter笔记本(无需下载到本地)

当找到一个有趣的 Python Jupyter Notebook 时,例如02.00-Introduction-to-NumPy.ipynb,我通常必须:

  • 下载到本地
  • 在同一文件夹中打开 shell(提示:使用SHIFT+ RIGHT CLICK+在此处打开命令窗口可以节省在不同文件夹中浏览 30 秒的时间)并执行以下操作jupyter notebook
  • 选择正确的.ipynb文件,最后运行代码

难道没有更简单的方法吗?

打开在线 .ipynb 笔记本并运行代码而无需手动下载 .ipynb 的自然方法是什么?

注意:笔记本在这里可见: https: //github.com/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/02.00-Introduction-to-NumPy.ipynb,但我们无法运行代码

python windows jupyter-notebook

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