小编min*_*234的帖子

读取Pythons memory_profiler的输出

我对理解memory_profilers输出有疑问.基本上,它看起来像这样:

Filename: tspviz.py

Line #    Mem usage    Increment   Line Contents
================================================
     7  34.589844 MiB  34.589844 MiB   @profile(precision=6)
     8                             def parse_arguments():
     9  34.917969 MiB   0.328125 MiB       a = [x**2 for x in range(10000)]
Run Code Online (Sandbox Code Playgroud)

在第9行,我们可以清楚地看到,我们使用了一些记忆.现在,我测量了这个列表的大小sys.getsizeof().我仔细检查它是否实际上是一个整数列表:

print(sys.getsizeof(a))
print(type(a[0]))
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

87624
<class 'int'>
Run Code Online (Sandbox Code Playgroud)

好吧,现在有一个问题.正如我所检查的那样,28在我的64位Windows机器上,Python中的int是大小的.我不知道这是否正确.但是就算是这样.10000 * 28= 0.28 MB.并且0.28 MB = 0.267028809 MiB(memory_profiler显示MiB 的输出).现在的问题是,在表中有0.328125 MiB,所以差异是0.061096191MB.

我关心的是,在Python中构建列表需要大量的内存,还是我以错误的方式解释某些内容?

和PS:为什么,当这个a列表长度时1000000,Increment这行的列中的数字,当我创建它时,就像-9xxx MiB?我的意思是为什么负数?

python memory-profiling python-3.x

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

x86可以独立或并行执行FPU操作吗?

我的老师声称处理器有时可以并行进行FPU操作.像这样:

float a = 3.14;
float b = 5.12;
float c;
float d = 3.02;
float e = 2.52;
float f;
c = a + b;
f = e + d;
Run Code Online (Sandbox Code Playgroud)

所以,正如我所听到的,上面的2个添加操作将比以下更快地执行:

float a = 3.14;
float b = 5.12;
float c;
float d = 3.02;
float e = 2.52;
float f;
c = a + b;
f = c + d;
Run Code Online (Sandbox Code Playgroud)

因为处理器必须等到c计算完成

我想验证这一点,所以我编写了一个执行第二件操作的函数,它通过检查时间戳计数器来测量时间:

flds    h # st(7)
flds    g # st(6)
flds    f # st(5)
flds    e …
Run Code Online (Sandbox Code Playgroud)

floating-point optimization x86 assembly fpu

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

Material-ui黑暗主题不适用于背景

我有我的反应应用程序,我想应用Material-ui darkBaseTheme.没有它,我的应用程序的一部分看起来像这样:

在此输入图像描述

在我将所有html内容包装在我render()的:

<MuiThemeProvider muiTheme={getMuiTheme(darkBaseTheme)}>
</MuiThemeProvider>
Run Code Online (Sandbox Code Playgroud)

,有这些进口:

import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'; // add
import RaisedButton from 'material-ui/RaisedButton'; // add
import getMuiTheme from 'material-ui/styles/getMuiTheme';
import darkBaseTheme from 'material-ui/styles/baseThemes/darkBaseTheme';
Run Code Online (Sandbox Code Playgroud)

,它看起来像这样:

在此输入图像描述

所以它改变了RaisedButtons.我知道它不应该改变HTML.但为什么不把背景变为黑暗呢?有没有办法做到这一点,或者我必须手动完成没有材料-ui?

reactjs material-ui

8
推荐指数
3
解决办法
7252
查看次数

展开选定部分中的所有部分

所以在 Visual Studio 中,如果我有一个折叠的函数代码,当我展开它时,它也会展开其中的所有 ifs、switchs 等。在visual studio代码中,如果我选择全部折叠(Ctrl+K Ctrl+0),那么如果我想快速检查一个函数(通过鼠标单击行号附近的十字来展开它),它会展开该函数,但它不会递归地进行,使我展开所有其他 if/else 或 case。有没有办法让这项工作按照我期望的方式工作?

visual-studio-code

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

仅锁定两个可能的互斥锁中的一个

我有一个模拟汽车研讨会的多线程C++程序.基本上a car是这里的线程,a station是资源.它的工作方式如下:汽车进入车间,它有一个车站列表(只是整数),它必须访问,以便修复.有3种类型的站:

  • 1x2站 - 1站可同时修复2辆车
  • 1x1站 - 1站可同时修复1辆车
  • 2x1站 - 完成工作需要2个站点

最后两种类型对我来说很容易,因为1x1类型我只是锁定互斥锁station而其他线程必须等待.关于2x1类型我只是std::lock在两个站点去避免死锁等.

问题在于第一种类型.让我们想象一下,修理两辆车意味着一辆车在车站的左侧,另一辆在右侧(我将不得不画出这种情况ncurses).所以我考虑为这样的1x2类型实现一个站:

class station1x2 {
public:
    std::mutex r_mutex;
    std::mutex l_mutex;
}
Run Code Online (Sandbox Code Playgroud)

所以,我想无论是锁定的r_mutex还是l_mutex,所以有4种可能的情况:

  • 他们两个都没有锁定,我锁定其中任何一个
  • 右边一个被锁定,我锁定左边一个
  • 左边一个是锁定的,我锁定了一个
  • 他们两个都被锁定了,我等等

这里的问题是:C++中是否存在锁定给定互斥锁之一的机制?(就像我给了一些函数我的r_mutex和l_mutex它选择了未锁定的函数并为我锁定它).

c++ multithreading mutex

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

Git 流程初始提交

我使用git-flow. 基本上,我已经完成了一些编码,然后我编写了这些确切的git命令:

git flow init (and a bunch of enters)
git remote add origin <my_repo_address>
git flow feature start Argparsing
git add .
git commit -m "<message1>"
git rm tests/*
git commit -m "deleted unused stuff"
git flow feature publish
Run Code Online (Sandbox Code Playgroud)

好吧,我想在我的feature/Argparsing分支上看到两个提交。我转到我的远程存储库GitHub,我看到了这个:

在此处输入图片说明

所以在第二个提交消息中,我补充说Initial commit,这是我做的第一次提交。但是,我想我不必这样做,因为git-flow首先为我添加了单独的初始提交。

正如你所看到的,提交是空的:

在此处输入图片说明

所以我的问题是:我想这是一种理想的行为,那么它是否只会在我实际启动具有功能的回购时发生,还是总是这样?顺便说一句:初始化git-flowrepo的正确方法是什么?我的意思是,在git flow init我应该提交(并且可能推送)某些内容之后developmaster还是应该继续处理我的功能,然后合并到develop,然后有一天到master

git github git-flow

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

表格单元格中的docx中心文本

所以我开始使用pythons docx库。现在,我创建一个具有多行,只有2列的表,如下所示:

现在,我希望这些单元格中的文本水平居中。我怎样才能做到这一点?我搜索了docxAPI文档,但只看到了有关对齐段落的信息。

python python-docx

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

在 Qt 中连接按钮

好的。所以我有简单的 Qt 应用程序,其中有lineEditQObjects pushButtonlineEdit按下按钮应打印文件中的文本.txt。简单的。当函数不带任何参数(只是将一些文本写入文件)时,我运行了这段代码。现在看起来像这样:

主窗口.h

private slots:
    static void on_some_pushButton_clicked(QString s);
Run Code Online (Sandbox Code Playgroud)

主窗口.cpp

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent),
    ui (new Ui::MainWindowClass)
{
    ui->setupUi(this);
    ui->pushButton->setText("GO");
    //Connecting a GO pushButton to a func which saves your name into a .txt file
    auto s = ui->lineEdit->text();
    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_some_pushButton_clicked(s)));
}

void MainWindow::on_some_pushButton_clicked(QString s)
{
    FILE *file;
    file=fopen("data.txt", "wt");
    fprintf(file, "XD\n");
    auto z=(s.toStdString()).c_str();
    fprintf(file, "%s", z);
    fclose(file);
}
Run Code Online (Sandbox Code Playgroud)

main.cpp(以防万一)

#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow …
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

JavaFX BarChart xAxis 标签定位错误

我的窗口有以下控制器:

package window;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;

import java.util.Map;
import java.util.SortedMap;

public class StatisticsController {

    @FXML
    private BarChart<?, ?> barChartHistogram;

    private SortedMap<String, Integer> _points;

    @FXML
    private CategoryAxis xAxis;
    @FXML
    private NumberAxis yAxis;

    public void onLoad(SortedMap<String, Integer> points) {
        xAxis.setLabel("Numer indeksu");
        yAxis.setLabel("Ilo?? punktów");
        //barChartHistogram.setBarGap(0);
        XYChart.Series series1 = new XYChart.Series();
        int a = 10;
        series1.getData().add(new XYChart.Data("Tom", 10));
        series1.getData().add(new XYChart.Data("Andrew", 7));
        series1.getData().add(new XYChart.Data("Patrick", 5));


        /*for (Map.Entry<String, Integer> p: points.entrySet()) {
            series1.getData().add(new XYChart.Data<>(Integer.toString(a), p.getValue()));
            a += …
Run Code Online (Sandbox Code Playgroud)

java javafx bar-chart

3
推荐指数
2
解决办法
2201
查看次数

PyQT5 正确的布局对齐

我的PyQt5GUI有以下代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget, QMainWindow, QGridLayout, QLayout, QTableWidget, QHeaderView, QLabel, QHBoxLayout, QVBoxLayout, QLineEdit, QComboBox
from PyQt5.QtCore import QDate, Qt
from datetime import date, datetime


class CalendarWindow(QMainWindow):
    def __init__(self, parent=None):
        super(CalendarWindow, self).__init__(parent)
        self.setUpUI()

    def setUpUI(self):
        self.setGeometry(50, 50, 1200, 700)
        # Labels
        self.label_events = QLabel(self)
        self.label_new_event = QLabel(self)
        self.label_event_name = QLabel(self)
        self.label_start_date = QLabel(self)
        self.label_repeat = QLabel(self)
        self.label_description = QLabel(self)
        # Labels parameters
        self.label_events.setAlignment(Qt.AlignCenter)
        self.label_events.setText("Wydarzenia danego dnia:")

        # self.label_new_event.setAlignment(Qt.AlignCenter)
        self.label_new_event.setText("Dodaj event:")

        self.label_event_name.setText("Nazwa eventu:")
        self.label_start_date.setText("Data eventu:") …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt5

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