小编d33*_*tah的帖子

如何确定程序是否与子进程崩溃?

我的应用程序创建子进程.通常,这些过程运行和终止没有任何问题.然而,有时,他们会崩溃.

我目前正在使用python 子进程模块来创建这些子进程.我通过调用Popen.poll()方法检查子进程是否崩溃.不幸的是,由于我的调试器在崩溃时被激活,因此轮询不会返回预期的输出.

我希望能够看到调试窗口(不终止它),并且仍然能够检测进程是否在python代码中崩溃.

有没有办法做到这一点?

python debugging subprocess popen

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

在Vim中重新定义Python代码

我需要用for循环包含一段代码.由于这是Python,我需要处理缩进并将标签数量增加一个.在Vim中有什么简单的方法吗?

python vi vim

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

Graphviz 点语言 - 绘制单个断开连接的节点/顶点?

我一直在谷歌上搜索这个很长一段时间,但我找不到任何东西。如何使用没有连接顶点的 Graphviz 绘制图形?

graphviz

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

Python 3 __getattr__的行为与Python 2不同?

我需要编写一个实现32位无符号整数的类,就像它们在C编程语言中一样.我最关心的是二元转换,但我通常希望我的班级:

  1. 具有相同的接口,int具有与工作int正常
  2. 我的U32类(int + U32,U32+ int等)的任何操作也返回U32
  3. 是纯python - 我不想使用NumPy,ctypes等.

正如在这个答案中可以找到的,我得到了一个在Python 2下运行的解决方案.最近我尝试在Python 3下运行它并注意到虽然以下测试代码在旧版本的Python下工作正常,但Python 3引发了一个错误:

class U32:
    """Emulates 32-bit unsigned int known from C programming language."""

    def __init__(self, num=0, base=None):
        """Creates the U32 object.

        Args:
            num: the integer/string to use as the initial state
            base: the base of the integer use if the num given was a string
        """
        if base is None:
            self.int_ = int(num) % 2**32
        else:
            self.int_ = …
Run Code Online (Sandbox Code Playgroud)

python

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

应用美国模糊 lop 作为 Travis CI 的一部分?

我想作为 Travis CI run 的一部分运行美国模糊 lop。我怎样才能做到这一点?

travis-ci american-fuzzy-lop

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

hub.docker.com的自托管替代方案?

我想设置一个私有版本的hub.docker.com,让我创建一个由我的私有gitlab实例推送的webhook.换句话说 - 当我推送到Gitlab时,这个Docker注册表会检查存储库并构建它.

我需要这个能够抵御恶意Dockerfiles,这样服务器就不会轻易被泄露,泄露所有托管容器的内容.有没有办法轻松实现这一目标?

self-hosting docker dockerhub dockerfile docker-registry

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

在尝试拆分字符串时,没有为`String`实现特性`FnMut <(char,)>`

我需要拆分另一个String(不&str)String:

use std::str::Split;

fn main() {
    let x = "".to_string().split("".to_string());
}
Run Code Online (Sandbox Code Playgroud)

为什么我会遇到此错误以及如果我必须对字符串进行操作,如何避免它?

error[E0277]: the trait bound `std::string::String: std::ops::FnMut<(char,)>` is not satisfied
 --> src/main.rs:4:32
  |
4 |         let x = "".to_string().split("".to_string());
  |                                ^^^^^ the trait `std::ops::FnMut<(char,)>` is not implemented for `std::string::String`
  |
  = note: required because of the requirements on the impl of `std::str::pattern::Pattern<'_>` for `std::string::String`
Run Code Online (Sandbox Code Playgroud)

根据# Derefstix- beginners IRC频道,这可能是1.20.0-夜间失败的一个例子.如何在Rust中拆分字符串?不按地址分割的问题String,不是&str.

rust

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

运行时错误:事件循环已关闭

我试图将 pyppeteer 和 quart 结合起来,但由于启动浏览器需要花费很多时间,我宁愿全局处理它(使用异步锁),这似乎意味着我需要手动处理清理。这是我的最小代码示例:

\n\n
#!/usr/bin/env python3\n\nimport asyncio\nimport atexit\nimport pyppeteer\n\nfrom quart import Quart, Response, request\n\napp = Quart(__name__)\nbrowser = asyncio.get_event_loop().run_until_complete(pyppeteer.launch())\n\nasync def cleanup_async():\n    await browser.quit()\n\n@atexit.register\ndef cleanup():\n    asyncio.get_event_loop().run_until_complete(cleanup_async())\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题如下:

\n\n
[22:26:53] \xe2\x9e\x9c  strokes git:(async_browser) \xe2\x9c\x97  % QUART_APP=/tmp/quart_cleanup.py timeout 10s quart run -h 0.0.0.0\nRunning on http://0.0.0.0:5000 (CTRL + C to quit)\nTraceback (most recent call last):\n  File "/home/d33tah/virtualenv-py3/bin/quart", line 11, in <module>\n    sys.exit(main())\n  File "/home/d33tah/virtualenv-py3/lib/python3.6/site-packages/quart/cli.py", line 208, in main\n    cli.main(args=args, prog_name=name)\n  File "/home/d33tah/virtualenv-py3/lib/python3.6/site-packages/quart/cli.py", line 152, in main\n    return super().main(*args, **kwargs)\n  File "/home/d33tah/virtualenv-py3/lib/python3.6/site-packages/click/core.py", line …
Run Code Online (Sandbox Code Playgroud)

python-3.x python-asyncio pyppeteer quart

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

ResourceWarning:未关闭的文件&lt;_io.BufferedReader name = 4&gt;

考虑以下程序:

import tempfile
import unittest
import subprocess

def my_fn(f):
    p = subprocess.Popen(['cat'], stdout=subprocess.PIPE, stdin=f)
    yield p.stdout.readline()
    p.kill()
    p.wait()

def my_test():
    with tempfile.TemporaryFile() as f:
        l = list(my_fn(f))

class BuggyTestCase(unittest.TestCase):
    def test_my_fn(self):
        my_test()

my_test()
unittest.main()
Run Code Online (Sandbox Code Playgroud)

运行它会产生以下输出:

a.py:13: ResourceWarning: unclosed file <_io.BufferedReader name=4>
  l = list(my_fn(f))
ResourceWarning: Enable tracemalloc to get the object allocation traceback
.
----------------------------------------------------------------------
Ran 1 test in 0.005s

OK
Run Code Online (Sandbox Code Playgroud)

警告的真正原因是什么以及如何解决?请注意,如果我注释掉,unittest.main()问题就消失了,这意味着它特定于subprocess + unittest + tempfile。

python

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

为什么我的Rust版本的"wc"慢于GNU coreutils的版本?

考虑这个程序:

use std::io::BufRead;
use std::io;

fn main() {
    let mut n = 0;
    let stdin = io::stdin();
    for _ in stdin.lock().lines() {
        n += 1;
    }
    println!("{}", n);
}
Run Code Online (Sandbox Code Playgroud)

为什么它比wc的GNU版本慢10倍?看看我如何测量它:

$ yes | dd count=1000000 | wc -l
256000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB, 488 MiB) copied, 1.16586 s, 439 MB/s
$ yes | dd count=1000000 | ./target/release/wc
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB, 488 MiB) copied, 41.685 s, 12.3 MB/s …
Run Code Online (Sandbox Code Playgroud)

benchmarking gnu-coreutils rust

4
推荐指数
3
解决办法
728
查看次数