Python 使用NSTask以比从终止符直接执行脚本慢的速度在目标C中运行SH脚本
我创建了一个sh/Python脚本作为执行文件。然而,当我使用NSTask从Objective C程序通过单击按钮运行此脚本时,进度时间比直接从MacOS终端执行脚本慢得多 我从stackoverlfow那里读到了一些使用nice-n的信息,但是没有任何帮助。 当通过Objective C执行脚本时,任何人都知道如何加快进程 要执行脚本的代码: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]
- (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
,然后查看如何进行。