小编sbh*_*tla的帖子

我使用scatter()时为什么会出现AttributeError,但是当我使用plot()时却没有

我希望使用Matplotlib/pylab绘图并在上面显示日期和时间x-axis.为此,我正在使用datetime模块.

这是一个完全符合要求的工作代码 -

import datetime
from pylab import *

figure()
t2=[]
t2.append(datetime.datetime(1970,1,1))
t2.append(datetime.datetime(2000,1,1))
xend= datetime.datetime.now()
yy=['0', '1']
plot(t2, yy)
print "lim is", xend
xlim(datetime.datetime(1980,1,1), xend)
Run Code Online (Sandbox Code Playgroud)

但是,当我使用scatter(t2,yy)命令代替时plot (t2,yy),它会出错:

AttributeError:'numpy.string_'对象没有属性'toordinal'

为什么会发生这种情况?如何与情节一起显示分散?

之前已经问过类似的问题as- AttributeError:'time.struct_time'对象没有'toordinal'属性, 但解决方案没有帮助.

python matplotlib python-datetime

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

如何确定MQTT客户端的用户ID?

目前我有一个MQTT系统,其中一个客户端发布,一个订阅.现在我想要一个许多客户发布的系统.怀疑者必须了解哪个客户端正在发送信息.

虽然一个明显的方法是简单地在发布消息中附加客户端ID,但我想知道是否有一种方法可以获取客户端ID而无需将其明确添加到消息中.

详细说明,假设主题是"/ hello/world",客户端1发布"OK",客户端2发布"ERR".有没有办法确定哪个客户端发送了什么消息?

mqtt

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

使用Mosquitto / Paho for Python无法接收超过20条MQTT消息

我正在使用Mosquitto(现在为Paho)的python MQTT客户端连接到HiveMQ代理。该代码非常基础,取自其文档-https: //pypi.python.org/pypi/paho-mqtt

#SUBSCRIBER
import paho.mqtt.client as mqtt

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, rc):
    client.subscribe("GB/node0/", 2) 

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print "Topic: ", msg.topic+'\nMessage: '+str(msg.payload)

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("192.168.15.4", 1883, 60)

# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
client.loop_forever()
Run Code Online (Sandbox Code Playgroud)

如您在client.subscribe()中所注意到的,QoS为2。这是对官方文档代码的唯一修改。

发布客户的代码是-

#PUBLISHER
import …
Run Code Online (Sandbox Code Playgroud)

python mqtt mosquitto paho

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

为什么 docker 不能在 3.10 之前的内核上运行?

Docker 通常不能在 3.10 之前的 Linux 内核上运行。(在某些情况下,它也可以在3.8内核中运行)。

新内核中哪些功能在旧内核中缺失,导致 docker 无法在其中运行?

linux docker linux-containers

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

BufferedReader如何从S3读取文件?

我在AWS S3中有一个非常大的文件(几GB),我只需要文件中的少量行满足一定的条件.我不想将整个文件加载到内存中,然后搜索并打印这几行 - 这个内存负载太高了.正确的方法是只加载内存中需要的那些行.

根据AWS文档从文件中读取:

fullObject = s3Client.getObject(new GetObjectRequest(bucketName, key));
 displayTextInputStream(fullObject.getObjectContent());

private static void displayTextInputStream(InputStream input) throws IOException {
    // Read the text input stream one line at a time and display each line.
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    String line = null;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
    System.out.println();
}
Run Code Online (Sandbox Code Playgroud)

这里我们使用BufferedReader.我不清楚这里发生了什么.

我们每次读取新行时是否对S3进行网络调用,并且只将当前行保留在缓冲区中?或者是整个文件加载到内存中,然后由BufferedReader逐行读取?或者介于两者之间?

java inputstream bufferedinputstream amazon-s3 bufferedreader

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

如何在 ZMQ 套接字中启动/退出时清除缓冲区?(防止服务器与死客户端连接)

我在 python 中使用 REQ/REP 类型的套接字进行 ZMQ 通信。有多个客户端尝试连接到一台服务器。已在客户端脚本中添加超时以防止无限期等待。

问题是,当服务器没有运行,并且客户端尝试建立连接时,它的消息被添加到队列缓冲区中,理想情况下此时甚至不应该存在。当脚本开始运行并且新客户端连接时,服务器首先接收前一个客户端的数据。这不应该发生。

当服务器启动时,它假定客户端已连接到它,因为它之前曾尝试连接,并且无法干净地退出(因为服务器已关闭)。

在下面的代码中,当客户端第一次尝试时,它得到ERR 03: Server down哪个是正确的,然后是Error disconnecting. 当服务器启动时,我得到ERR 02: Server Busy第一个连接的客户端。这不应该发生。客户端应该能够与服务器无缝连接,因为它已经启动并正在运行。

服务器代码:

import zmq

def server_fn():

context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://192.168.1.14:5555")
one=1
while one == 1:
    message = socket.recv()
    #start process if valid new connection
    if message == 'hello':
        socket.send(message) #ACK
        #keep session alive until application ends it.
        while one == 1:
            message = socket.recv()
            print("Received request: ", message)
            #exit connection
            if message == 'bye': …
Run Code Online (Sandbox Code Playgroud)

python sockets zeromq pyzmq

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

在C中使用__attribute __(格式)来定义函数有什么用?

我在一个C项目中遇到过这行代码,我不明白.

#define FMT_CHK(fmt, args)  __attribute__ ((format (printf, fmt, args)))
Run Code Online (Sandbox Code Playgroud)

GNU网站没有明确解释(https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes)

它的目的是什么__attribute__ ((format ())以及应该如何使用?

c gcc

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

从字符串中删除前缀子字符串

我有一个字符串abc.def.ghi.j,我想从中删除abc.,以便我有def.ghi.j.

1)删除具有特定模式的前缀的最佳方法是什么?

2)因为在这种情况下,abc巧合的是前缀,这可能会使事情变得更容易。如果我们想要abc.ghi.j作为输出怎么办?

我用这样的split方法试过了

set name abc.def.ghi.j
set splitVar [split $name {{abc.}} ]
Run Code Online (Sandbox Code Playgroud)

问题是它拆分为、和 中的每一个a,而不是作为一个整体分开。bc.

tcl

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

在不关闭连接的情况下在 python 中获取更新的 MySQL 表条目

我有 2 个 python 程序正在运行。Script1 定期将条目写入一个表,Script2 从同一个 MySQL 表中读取。两者同时运行。Script2 必须获取表的最后一个(最新添加的)条目。

现在,问题是 Script1 完美地将条目添加到表中,但 Script2 每次都无法读取最新的条目。它仅在我阅读后关闭连接时才读取最新条目,并在我想再次阅读时重新打开它。

这是唯一可以采取的方法吗?有没有办法在不需要每次关闭和打开连接的情况下获取更新的值?访问不断更新的数据库时,程序员遵循的最佳实践是什么?

更详细地:

下面的代码工作正常,但无法显示更新的值。它第一次成功显示了最后一个条目,但接下来的几次 readComm() 被调用,尽管表已被更新,但再次显示相同的条目。

import MySQLdb
import time

db = MySQLdb.connect("localhost", "root", "abc", "abc")
cursor=db.cursor()

def readComm():
    sql = "SELECT * FROM my_table ORDER BY id DESC LIMIT 1;"
    try:
        cursor.execute(sql)
        # Fetch all the rows in a list of lists.
        results = cursor.fetchall()
        print '~~~~', results
    except:
        print "Error! Unable to fetch data" 
    return
for i in range(5):
    readComm()
    time.sleep(10)
Run Code Online (Sandbox Code Playgroud)

如果我修改它,代码会显示更新的值,以便在我每次进入和退出 readComm() 时打开和关闭数据库。

python mysql sql

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

得到警告-在C代码中可能为null之前取消引用

对代码执行静态分析(SA)时收到警告。我在下面做了简化(带有第一个警告)-

typedef struct testStruct_ {
int *ptr;
} testStruct;

testStruct a;
testStruct *a_ptr;
a_ptr = &a;
a_ptr->ptr = NULL; #WARNING: Directly dereferencing pointer a_ptr.
Run Code Online (Sandbox Code Playgroud)

该代码继续对进行一些操作a_ptr。为了完成起见,我发布了一个示例-

rc = fn_a (filename, a_ptr);
rc = fn_b (a_ptr);
rc = fn_c (a_ptr->ptr);
Run Code Online (Sandbox Code Playgroud)

fn_a定义为-

fn_a (const char *filename, testStruct *a_ptr)
{
    a_ptr->ptr = fn_a_2(filename);
    if (!a_ptr->ptr) {
        ERR("Loading (%s) failed", filename);
        return (FALSE);
    }
    return (TRUE);
}
Run Code Online (Sandbox Code Playgroud)

稍后,我又收到另一条警告:

if (a_ptr && a_ptr->ptr) {
    freeFn(a_ptr->ptr);
}
#WARNING: Dereference before NULL check - NULL checking …
Run Code Online (Sandbox Code Playgroud)

c pointers static-analysis coverity

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

使用memcpy后无法打印指针

我正在尝试使用自己的memcpy版本将字符数组从一个指针复制到另一个指针.但是,这会产生错误.看来printf存在问题.

其次,官方memcpy函数返回目标指针.这真的需要吗?如果我修改*dest,它应该反映在*d中.那么返回什么需要什么呢?

#include <stdio.h>

void memcpy2(void *dest, const void *src, size_t n)
{
    char *dp = dest;
    const char *sp = src;
    while (n--)
        *dp++ = *sp++;
}

int main(void) {
    char *c = "Hello";
    char *d=NULL;
    memcpy2(d,c,3);
    printf( "%c", *d);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c pointers

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