在bash(或其他shell)中是否存在某种字符限制,可以输入多长时间?如果是这样,那个字符限制是什么?
即是否可以在bash中编写一个命令行执行时间过长的命令?如果没有要求的限制,是否有建议的限制?
我正在使用ffmpeg从RTSP流处理一堆帧.我最终对这些帧进行了大量处理,这意味着我并不总是实时提取.如果缓冲区已满,则进程挂起.我想知道以下解决方案之一是否可行/解决问题,如果是,我将如何使用ffmpeg库实现它:
1)如果我到达悬挂点,有没有办法清除缓冲区?(我可以确定它何时挂起,我只是不知道该怎么做).
2)有没有办法让缓冲区覆盖旧数据,只是总是读取最新的数据?如果我丢帧,对我来说无关紧要.
3)我已经发现,我可以让缓冲区arbtrarily大:av_dict_set(&avd, "buffer_size", "655360", 0);
.这可能是一个解决方案,但我不知道它需要多大/多小,因为我不知道流将发布视频的时间有多长?
4)这只是我需要提出的ffmpeg人员的错误吗?
5)我没有考虑过的其他事情?
while(av_read_frame(context, &(packet)) >= 0 && fcount < fps*SECONDS) {
clock_t start, end;
int ret = avcodec_send_packet(codec_context, packet);
if(!(packet->stream_index == video_stream_index)) {
continue;
}
if (ret == AVERROR(EAGAIN) || ret == AVERROR(EINVAL)) {
continue;
} else if (ret < 0) {
cerr << "Error while decoding frame " << fcount << endl;
exit(1);
}
ret = avcodec_receive_frame(codec_context, frame);
if (ret == AVERROR(EAGAIN) || ret == AVERROR(EINVAL)) {
continue;
} else …
Run Code Online (Sandbox Code Playgroud) 为什么评论显着加快?弹出,比较和长度检查不应该是O(1)吗?这会显着影响速度吗?
#! /usr/bin/python
import math
pmarbs = []
pows = 49
pmarbs.append("W")
inc = 1
for i in range(pows):
count = 0
j = 0
ran = int(pow(2, i))
marker = len(pmarbs) - inc
while (j < ran):
#potential marble choice
pot = pmarbs[marker - j]
pot1 = pot + "W"
pot2 = pot + "B"
if (pot2.count('W') < pot2.count('B')) and (len(pot2) > (i+1)):
count += 1
else:
pmarbs.append(pot2)
pmarbs.append(pot1)
# if(len(pmarbs[0]) < i):
# pmarbs.pop(0)
# marker -= 1 …
Run Code Online (Sandbox Code Playgroud) 好的,首先,公平警告,这是一个班级的项目.除了修复我的内存泄漏之外,我不是在寻找任何帮助.我想我已经在这个C代码的空间上遵循了一些可怕的编码实践.无论如何,当我运行Valgrind来搜索内存泄漏发生的位置时,我一点都不清楚我错过了什么内存泄漏.我知道至少有两个字符串,我没有释放,但我malloc()编辑,纯粹基于valgrind输出的大小.因为我从项目中获取了一些无关的代码,valgrind行号很可能已经关闭,因此为了方便起见,我将它们标记为注释.
一点背景,我正在编写shell的基本功能.它目前执行以下操作:
1.接受用户输入
2.将输入解析为cmdin结构
3.执行命令,前提是它没有管道.
4.从我创建的cmdin中取出空间,然后从步骤1重新开始.这就是问题发生的地方.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#define MAX_SIZE 1024
#define MAX_CLEN 2097152
#define READ_END 0
#define WRITE_END 1
#define CHILD_STATUS 0
struct cmdin
{
char *cmd;
char **args;
int nargs;
int pipeflag;
};
//check if the last argument of the command passed to it is a pipe.
//if so, return the position of the pipe, otherwise, return 0
//if it has already found a pipe, it will return the …
Run Code Online (Sandbox Code Playgroud) 这个标题可能令人困惑,但基本上我希望能够做到以下几点:
import subprocess
subprocess.call(["python"])
subprocess.call(["import", "antigravity"])
subprocess.check_call(["print","\"This is so meta\" "])
subprocess.call(["exit()"])
Run Code Online (Sandbox Code Playgroud)
预期的行为是它会打开一个 python 终端会话,然后打开 xkcd 漫画 353,在命令行中打印 'this is so meta',最后退出 python 命令行。
基本上,我希望能够打开一个 python 会话,并从我的 python 脚本中运行命令。我还希望能够检查我在脚本中运行的命令的输出。这可能吗?如果是这样,我需要使用什么库?子进程会这样做吗?
是否有可能从Image对象中获取已经打开的Image的文件名?我检查了API,我能想到的最好的是PIL.Image.info,但是当我检查它时它似乎是空的.我还可以使用其他东西在PIL图像库中获取此信息吗?
(是的,我意识到我可以将文件名传递给函数.我正在寻找另一种方法来执行此操作.)
即
from PIL import Image
def foo_img(img_input):
filename = img_input.info["filename"]
# I want this to print '/path/to/some/img.img'
print(filename)
foo_img(Image.open('/path/to/some/img.img'))
Run Code Online (Sandbox Code Playgroud) 基本上,我想要一个花哨的oneliner,它不会将我正在查看的所有文件读入内存,但仍会处理它们,并保存了一个很好的样本.
我想做的oneliner是:
def foo(findex):
return [bar(line) for line in findex] # but skip every nth term
Run Code Online (Sandbox Code Playgroud)
但我希望能够不能保存每一行.即,我仍然希望它运行(用于字节位置),但我不想保存图像,因为我没有足够的内存.
所以,如果bar(line)的输出是1,2,3,4,5,6,...
我希望它仍然可以继续运行,1,2,3,4,5,6,...
但我希望返回值为[1,3,5,7,9,...]
或类似的东西.
当我运行这个没有任何输入的程序时,我得到了一个奇怪的字符串,用于我的argv [2].为什么不是argv [2]未定义?TERM_PROGRAM=Apple_T
< - 这就是我得到的.我想知道这是否与在mac上运行它有关?
if(argv[2]) {
sscanf(argv[2], "%lf", &argWind);
sscanf(argv[2], "%20s", str);
sprintf(str2, "%lf", argWind);
printf("String: %s, %lf", str, argWind);
int len;
len = strlen(str);
str2[len] = '\0';
if(strcmp(str, str2)){
printf("\nError: you entered a non-numeric entry for wind speed\n");
return 0;
}
}
Run Code Online (Sandbox Code Playgroud) python ×4
c ×2
bash ×1
buffer ×1
c++ ×1
ffmpeg ×1
memory-leaks ×1
performance ×1
python-2.7 ×1
python-3.x ×1
shell ×1
subprocess ×1
unix ×1
valgrind ×1