小编Ada*_*dam的帖子

当已部署的容器完成时,如何使GCE实例停止?

我有一个执行单个大型计算的Docker容器。此计算需要大量内存,并且需要大约12个小时才能运行。

我可以创建适当大小的Google Compute Engine VM,并使用“将容器映像部署到此VM实例”选项来完美运行此作业。但是,一旦作业完成,容器将退出,但VM仍在运行(并且正在充电)。

容器退出时如何使VM退出/停止/删除?

当VM处于其僵尸模式时,仅堆栈驱动器容器处于运行状态:

$ docker ps
CONTAINER ID        IMAGE                                                                COMMAND                  CREATED             STATUS              PORTS               NAMES
bfa2feb03180        gcr.io/stackdriver-agents/stackdriver-logging-agent:0.2-1.5.33-1-1   "/entrypoint.sh /u..."   17 hours ago        Up 17 hours                             stackdriver-logging-agent
161439a487c2        gcr.io/stackdriver-agents/stackdriver-metadata-agent:0.2-0.0.17-2    "/bin/sh -c /opt/s..."   17 hours ago        Up 17 hours         8000/tcp            stackdriver-metadata-agent
Run Code Online (Sandbox Code Playgroud)

我这样创建虚拟机:

gcloud beta compute --project=abc instances create-with-container vm-name \
                    --zone=us-central1-c --machine-type=custom-1-65536-ext \
                    --network=default --network-tier=PREMIUM --metadata=google-logging-enabled=true \
                    --maintenance-policy=MIGRATE \
                    --service-account=xyz \
                    --scopes=https://www.googleapis.com/auth/cloud-platform \
                    --image=cos-stable-69-10895-71-0 --image-project=cos-cloud --boot-disk-size=10GB \
                    --boot-disk-type=pd-standard --boot-disk-device-name=vm-name \
                    --container-image=gcr.io/abc/my-image --container-restart-policy=on-failure \
                    --container-command=python3 \
                    --container-arg="a" --container-arg="b" --container-arg="c" \ …
Run Code Online (Sandbox Code Playgroud)

containers google-compute-engine

7
推荐指数
3
解决办法
799
查看次数

是否有线程SPARQL实现?

我们正在为每次迭代使用一组SPARQL查询构建迭代算法.这个算法效果很好,但我们遇到了CPU利用率问题.像Fuseki这样的SPARQL引擎并不是真正的多线程; 它们允许在多个线程中执行多个同时查询,但每个单独的查询都是单线程的.从一些Fuseki笔记看,我得到的印象是Fuseki不是线程安全的,所以这不是一个小问题.

由于我们的算法在SPARQL查询方面本质上是串行的,并且我们对一次运行感兴趣,是否有一些SPARQL引擎可以利用32个内核?

rdf sparql

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

(.eh)在nm输出中的含义是什么?

当我查看我的库中的符号时nm mylib.a,我看到一些重复的条目,如下所示:

000000000002d130 S __ZN7quadmat11SpAddLeavesC1EPNS_14BlockContainerEPy
00000000000628a8 S __ZN7quadmat11SpAddLeavesC1EPNS_14BlockContainerEPy.eh
Run Code Online (Sandbox Code Playgroud)

通过管道输送c++filt:

000000000002d130 S quadmat::SpAddLeaves::SpAddLeaves(quadmat::BlockContainer*, unsigned long long*)
00000000000628a8 S quadmat::SpAddLeaves::SpAddLeaves(quadmat::BlockContainer*, unsigned long long*) (.eh)
Run Code Online (Sandbox Code Playgroud)

.eh意味着什么,这个额外符号用于什么?

我发现它与异常处理有关.但为什么这会使用额外的符号?

(我用clang注意到这一点)

c++ symbol-table nm

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

我可以使用标准库在C中寻找超过2GB的位置吗?

我正在制作一个用C语言读取磁盘映像的程序.我正在尝试制作可移植的东西,因此我不想使用太多特定于操作系统的库.我知道有很多磁盘映像是非常大的文件,但我不确定如何支持这些文件.

我已经阅读了fseek,它似乎使用了一个long int不能保证支持超过2 31 -1的值.fsetpos似乎支持更大的值,fpos_t但无法指定绝对位置.我也有关于使用几个相对寻求fseek但不确定这是否可移植.

如何在C中支持可移植地支持大文件?

c standards file standard-library seek

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

如何在clang(或gcc)中解码C++名称?

我正在努力为clang编写一个快速而肮脏的demangler.我已经发现了一段代码使用abi::__cxa_demangle,但我想不出它需要哪些头.显而易见的选择是ABI.h但是:

demangle.cpp:2:10: fatal error: 'ABI.h' file not found
#include <ABI.h>
         ^
Run Code Online (Sandbox Code Playgroud)

我需要使用abi::__cxa_demangle什么?

c++ gcc abi clang

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

在Python3中迭代文件行时`tell()`的替代方法?

在迭代Python3中的文件时,如何找出文件光标的位置?

在Python 2.7中,它是微不足道的,使用tell().在Python3中,同一个调用抛出OSError:

Traceback (most recent call last):
  File "foo.py", line 113, in check_file
    pos = infile.tell()
OSError: telling position disabled by next() call
Run Code Online (Sandbox Code Playgroud)

我的用例是创建一个用于读取大型CSV文件的进度条.计算总行数太昂贵,需要额外通过.一个近似值非常有用,我不关心缓冲区或其他噪声源,我想知道它是否需要10秒或10分钟.

简单的代码重现问题.它在Python 2.7上按预期工作,但抛出Python 3:

file_size = os.stat(path).st_size
with open(path, "r") as infile:
    reader = csv.reader(infile)
    for row in reader:
        pos = infile.tell()  # OSError: telling position disabled by next() call
        print("At byte {} of {}".format(pos, file_size))
Run Code Online (Sandbox Code Playgroud)

这个答案/sf/answers/2074925121/表明问题是该next()方法tell()在迭代期间禁用.替代方案是逐行手动读取,但该代码在CSV模块内,所以我无法得到它.我也无法通过禁用来理解Python 3的收益tell().

那么在迭代Python 3中的文件行时找出字节偏移量的首选方法是什么?

python csv python-3.x

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

如何结合两个排序的向量并组合重叠元素?

typedef pair<int, double> Element;
Run Code Online (Sandbox Code Playgroud)

然后我有两个向量:

vector<Element> A, B;
Run Code Online (Sandbox Code Playgroud)

这些向量按整数排序Element.first.我想第三个向量,C,这是工会AB.这听起来像set_union,但我需要不同的行为A[i].first == B[j].first.set_union将只选择要包含的源元素之一C,但我需要结果来"组合"这两个元素.换句话说,这样的事情:

C[k].first = A[i].first; // == B[j].first.  set_union does this
C[k].second = A[i].second + B[j].second; // set_union does NOT do this.
Run Code Online (Sandbox Code Playgroud)

我很感兴趣,如果可以使用标准库(或像Boost这样的东西).手动执行此操作的代码并不是特别复杂,但我不想重新发明这个轮子.

我能找到的唯一其他相关操作是合并.它也不合并元素,并涉及另一个组合传递.

c++ boost vector set c++11

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

javafx 是否支持 MDI(多文档界面)?

我正在设计程序,我需要使用 MDI(多文档界面),但我不知道该怎么做,所以请有人回答我。YouTube 上有在 javafx 中执行 MDI 的视频,但没有视频链接的源代码或解释:https : //www.youtube.com/watch?v=0nskbRY-Tnw。请帮我解决这个问题,javafx 不允许我们在其他窗口中管理窗口,这是可耻的。

javafx javafx-2 javafx-8

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

C++ boost::filesystem 如何检测路径是文件还是目录?

在 boost::filesystem 库中有没有办法确定路径是目录还是文件?

我的场景是:我有一些文件夹和文件,我需要所有文件的完整路径并将其推送到向量,所以我这样做了:

for ( boost::filesystem::recursive_directory_iterator end, dir(pathBase);
    dir != end; ++dir ) {
    if ( boost::filesystem::exists( dir->path() ) )
    {
        std::cout << dir->path() << "\n";  // full path
        filenames.push_back(dir->path().string());
    }
  }
Run Code Online (Sandbox Code Playgroud)

问题是exists方法检查目录或文件是否存在并且无法检测它们的类型(文件或目录)。

那么我怎样才能只获得带有 boost 库的文件呢?

c++ boost

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

空内联函数到底发生了什么?

我正在编写代码(使用GCC 4.7.2),在测试阶段,我在代码的无数位置过度记录内容.这些记录应该在发布二进制文件上消失.

我正在通过一个函数进行日志记录void log(std::string msg);.由于这些函数调用很多并且通过许多文件中的整个代码进行分发,因此我有了使其成为内联函数的想法,并为发布二进制文件赋予它一个空体.

不,我的问题是:编译器用它做什么?二进制文件是否仅包含没有函数的其余代码,是否包含a nop或其他任何内容?我可以通过清空内联日志记录功能完全消除二进制文件中的日志代码吗?

我不仅对解决问题的答案感兴趣,而且我对编译器的行为本身也很好奇.

c++ inline

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

((MPI_Datatype)1)在C++中的含义是什么?

有人能说出这在C++中到底是什么意思吗?

typedef int MPI_Datatype;
#define MPI_CHAR           ((MPI_Datatype)1)
Run Code Online (Sandbox Code Playgroud)

这是一种铸造吗?

c++ casting typedef mpi

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

如何获取 CMake 单元测试的相对路径?

我有一个使用 CMake 构建的项目,它使用 Catch2 进行单元测试。一些单元测试练习从文件加载数据的代码,如下所示:

std::string resource_dir = "TEST_CWD/resources/";
std::ifstream infile{resource_dir + "datafile.txt"}
Run Code Online (Sandbox Code Playgroud)

问题是如何正确获取 的值TEST_CWD

目录结构很简单(并不是一成不变的):

my_project/
    test/
        resources/datafile.txt
        loader_test.cpp
Run Code Online (Sandbox Code Playgroud)

留空TEST_CWD有时会起作用,但在通过 IDE 运行测试时会中断。使用绝对路径设置环境变量也可以,但在其他机器上会崩溃。同样,强制所有用户手动设置环境变量也是用户不友好的。

在 CMake 项目中指定相对文件路径的好方法是什么?

c++ unit-testing cmake catch2

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