def type_consumer():
    # type: () -> None
    """
    Infinite loop of the type consumer thread.
    It gets types to process from the task query.
    """

    # we are not interested in profiling type_consumer itself
    # but we start it before any other thread
    while True:
        item = _task_queue.get()
        if isinstance(item, KeyAndTypes):
            if item.key in collected_args:
                # Previous call didn't get a corresponding return, perhaps because we
                # stopped collecting types in the middle of a call or because of
                # a recursive function.
                _flush_signature(item.key, UnknownType)
            collected_args[item.key] = ArgTypes(item.types)
        else:
            assert isinstance(item, KeyAndReturn)
            if item.key in collected_args:
                _flush_signature(item.key, item.return_type)
        _task_queue.task_done()
def type_consumer ( ) : while True : item = _task_queue . get ( ) if isinstance ( item , KeyAndTypes ) : if item . key in collected_args : _flush_signature ( item . key , UnknownType ) collected_args [ item . key ] = ArgTypes ( item . types ) else : assert isinstance ( item , KeyAndReturn ) if item . key in collected_args : _flush_signature ( item . key , item . return_type ) _task_queue . task_done ( )
Infinite loop of the type consumer thread.
    It gets types to process from the task query.