Могу ли я вызвать исключение из потока A в потоке B?
Нет никакого способа сделать это средствами языка, но можно с помощью хака, использующего Cишное API CPython:import ctypes
import threading
import time


def raise_async(thread, exception):
    if thread.ident is None:
        raise ValueError('Поток не запущен')
    r = ctypes.pythonapi.PyThreadState_SetAsyncExc(thread.ident, ctypes.py_object(exception))
    if r == 0:
        raise ValueError('Неправильный идентификатор потока')
    elif r > 1:
        ctypes.pythonapi.PyThreadState_SetAsyncExc(thread.ident, 0)
        raise SystemError('Неожиданное состояние среды выполнения')


def f():
    print('Поток запущен')
    try:
        while True:
            time.sleep(1)
    except ZeroDivisionError:
        print('Эй! Я же ничего не делил!')


if __name__ == '__main__':
    t = threading.Thread(target=f)
    t.start()

    time.sleep(3)
    raise_async(t, ZeroDivisionError)

    t.join()
Правда не факт, что поможет. Если поток заблокировался на вводе/выводе, то виртуальная машина просто не будет делать проверку исключений.
И повторюсь, что вашу проблему наверняка можно решить каким-нибудь иным, более правильным способом.
В общем случае, нет, нельзя.
Но если в потоке А предусмотреть метод, который падает с исключением, то можно вызвать этот метод из потока Б