Асинхронный запрос к серверу из фонового потока

Из версии 0.20.0 используйте MultiIndex.remove_unused_levels :

print (df.index)
MultiIndex(levels=[['CAN', 'USA'], ['total']],
           labels=[[1], [0]],
           names=['country', 'sex'])

df.index = df.index.remove_unused_levels()

print (df.index)
MultiIndex(levels=[['USA'], ['total']],
           labels=[[0], [0]],
           names=['country', 'sex'])

37
задан Micah Hainline 15 November 2011 в 22:01
поделиться

1 ответ

Да, поток завершается. Вы можете увидеть это, добавив:

-(void)threadDone:(NSNotification*)arg
{
    NSLog(@"Thread exiting");
}

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(threadDone:)
                                             name:NSThreadWillExitNotification
                                           object:nil];

Вы можете предотвратить завершение потока с помощью:

-(void) downloadImage
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    [self downloadImage:urlString];

    CFRunLoopRun(); // Avoid thread exiting
    [pool release];
}

Однако это означает, что поток никогда не завершится. Поэтому вам нужно остановить его, когда вы закончите.

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    CFRunLoopStop(CFRunLoopGetCurrent());
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    CFRunLoopStop(CFRunLoopGetCurrent());
}

Подробнее о циклах выполнения см. В Руководстве по потокам и Справочнике по циклам выполнения .

59
ответ дан 27 November 2019 в 04:46
поделиться