train_test_split
нет в preprocessing
, это в model_selection
и cross_validation
, так что вы имели в виду:
from sklearn.model_selection import train_test_split
Или:
from sklearn.cross_validation import train_test_split
Я думаю, что самый легкий путь состоит в том, чтобы использовать NSThread's - (пусто) отменяют метод. Вам будет нужна ссылка на поток, который Вы создали, также. Ваш пример кода выглядел бы примерно так, если можно сделать рабочий поток как цикл:
- (IBAction)startWorking:(id)sender {
myThread = [[NSThread alloc] initWithTarget:self selector:@selector(threadMain:) object:nil];
[myThread start];
}
- (void)threadMain
{
while(1)
{
// do IO here
if([[NSThread currentThread] isCancelled])
break;
}
}
- (IBAction)stop:(id)sender {
[myThread cancel];
[myThread release];
myThread = nil;
}
Конечно, это только отменит поток между повторениями цикла. Так, при выполнении некоторого долгого вычисления блокирования необходимо будет найти способ разбить его в части, таким образом, можно периодически проверять isCancelled.
Также смотрите на классы NSOperationQueue и NSOperation. Именно другой набор поточной обработки классов делает разработку модели рабочего потока очень легкой сделать.