我对理解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?我的意思是为什么负数?
我的老师声称处理器有时可以并行进行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) 我有我的反应应用程序,我想应用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?
所以在 Visual Studio 中,如果我有一个折叠的函数代码,当我展开它时,它也会展开其中的所有 ifs、switchs 等。在visual studio代码中,如果我选择全部折叠(Ctrl+K Ctrl+0),那么如果我想快速检查一个函数(通过鼠标单击行号附近的十字来展开它),它会展开该函数,但它不会递归地进行,使我展开所有其他 if/else 或 case。有没有办法让这项工作按照我期望的方式工作?
我有一个模拟汽车研讨会的多线程C++程序.基本上a car是这里的线程,a station是资源.它的工作方式如下:汽车进入车间,它有一个车站列表(只是整数),它必须访问,以便修复.有3种类型的站:
最后两种类型对我来说很容易,因为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它选择了未锁定的函数并为我锁定它).
我使用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我应该提交(并且可能推送)某些内容之后develop,master还是应该继续处理我的功能,然后合并到develop,然后有一天到master?
所以我开始使用pythons docx库。现在,我创建一个具有多行,只有2列的表,如下所示:

现在,我希望这些单元格中的文本水平居中。我怎样才能做到这一点?我搜索了docxAPI文档,但只看到了有关对齐段落的信息。
好的。所以我有简单的 Qt 应用程序,其中有lineEditQObjects pushButton。lineEdit按下按钮应打印文件中的文本.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) 我的窗口有以下控制器:
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) 我的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 ×3
c++ ×2
assembly ×1
bar-chart ×1
fpu ×1
git ×1
git-flow ×1
github ×1
java ×1
javafx ×1
material-ui ×1
mutex ×1
optimization ×1
pyqt ×1
pyqt5 ×1
python-3.x ×1
python-docx ×1
qt ×1
reactjs ×1
x86 ×1