Bir Kakao uygulamasından bir Python komut dosyasını çalıştırmaya çalışıyorum. Ana iş parçacığı üzerinde gayet iyi çalışıyor, ancak arka planda, eşzamanlı bir GCD kuyruğunda çalışmasını isterim. Paylaşılan bir tekil örneğini kullanarak, aşağıdaki örnek yöntemi çağrılabilir (defalarca) script Bundan sonraKODA komut dosyasından çalışan Python komut dosyasını GCD kullanarak yönetme
- (BOOL)setupPythonEnvironment {
if (Py_IsInitialized()) return YES;
Py_SetProgramName("/usr/bin/python");
Py_Initialize();
NSString *scriptPath = [[NSBundle mainBundle] pathForResource:@"MyScript" ofType:@"py"];
FILE *mainFile = fopen([scriptPath UTF8String], "r");
return (PyRun_SimpleFile(mainFile, (char *)[[scriptPath lastPathComponent] UTF8String]) == 0);
}
: Ben kurulum için Python komut dosyasını çalışan bir yönetici sınıfını aşağıdaki yöntemi kullanıyorum
yöneticisi sınıfı:
from Foundation import *
def run_with_arguments(arguments):
# ...a long-running script
class MyScriptExecutor(NSObject):
@classmethod
def runWithArguments_(self, arguments):
return run_with_arguments(arguments)
: aşağıdaki Python koduna
- (id)runScriptWithArguments:(NSArray *)arguments {
return [NSClassFromString(@"MyScriptExecutor") runWithArguments:arguments];
}
yukarıdaki amacı-C kodu kanca
Bu, her zaman yukarıdaki Objective-C yöntemlerini ana sıradan çalıştırdığımda çalışır, ancak betik başka bir sıradan çalıştırıldığında null değerini döndürür. Birisi bana yapmaya çalıştığım şeyi desteklemiyorsa ve etrafta iyi bir yol olup olmadığını bana açıklayabilir mi?
Python komut dosyalarına sıkça denir ve uzun süre çalışır, bu nedenle ana iş parçacığı üzerinde çok yavaş olur, bir seri sıra çalıştırır. Ayrıca, Objective-C içinde eşzamanlılık kodunu olabildiğince içermek istiyorum. piton gömme özgü bazı bazı oldukça karmaşık parçacığı endişeler vardır gibi
sayesinde this page itibaren
Bu örnekte yaptığınız şeyi gerçekten bilmek için yeterli bilgi yok. – jkh
Python binary'ini xcode ile nasıl entegre ettiğinizi söyler misiniz? – bijan