Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用NSTask以比从终止符直接执行脚本慢的速度在目标C中运行SH脚本_Python_Objective C_Macos_Shell_Nstask - Fatal编程技术网

Python 使用NSTask以比从终止符直接执行脚本慢的速度在目标C中运行SH脚本

Python 使用NSTask以比从终止符直接执行脚本慢的速度在目标C中运行SH脚本,python,objective-c,macos,shell,nstask,Python,Objective C,Macos,Shell,Nstask,我创建了一个sh/Python脚本作为执行文件。然而,当我使用NSTask从Objective C程序通过单击按钮运行此脚本时,进度时间比直接从MacOS终端执行脚本慢得多 我从stackoverlfow那里读到了一些使用nice-n的信息,但是没有任何帮助。 当通过Objective C执行脚本时,任何人都知道如何加快进程 要执行脚本的代码: - (NSString *)runCommand:(NSString*) script{ NSTask *task = [[NSTask alloc]

我创建了一个sh/Python脚本作为执行文件。然而,当我使用NSTask从Objective C程序通过单击按钮运行此脚本时,进度时间比直接从MacOS终端执行脚本慢得多

我从stackoverlfow那里读到了一些使用nice-n的信息,但是没有任何帮助。 当通过Objective C执行脚本时,任何人都知道如何加快进程

要执行脚本的代码:

- (NSString *)runCommand:(NSString*) script{
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/sh"];

NSArray *arguments = [NSArray arrayWithObjects:
                      @"-c" ,
                      [NSString stringWithFormat:@"%@", script],
                      nil];
[task setArguments:arguments];

NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput:pipe];

NSPipe* stdErrPipe = nil;
stdErrPipe = [NSPipe pipe];
[task setStandardError: stdErrPipe];

NSFileHandle *file = [pipe fileHandleForReading];
NSFileHandle *filErr = [stdErrPipe fileHandleForReading];

[task launch];
NSData *data = [file readDataToEndOfFile];
NSData *dataError = [filErr readDataToEndOfFile];
[task waitUntilExit];

NSInteger exitCode = task.terminationStatus;

if (exitCode != 0)
{
    NSString *outputErr = [[NSString alloc] initWithData:dataError encoding:NSUTF8StringEncoding];
    NSLog(@"Error!");
    return [@"Error!" stringByAppendingString:outputErr];
}
NSString *output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return output;
}

您是否在未连接调试器的情况下对发布版本进行基准测试?我不确定,在Scheme setting中,我已经将版本保留为release,是否需要设置任何其他设置?将
NSTask.qualityOfService
设置为
NSQualityOfService UserInteractive
NSQualityOfService UserInitiated
,然后查看如何进行。