Проблема с использованием модуля multiprocessing

Я решил снова написать калькулятор ради интереса и добавить туда возможность вычислить факториал, но при больших числах он работал крайне долго. Тогда я решил добавить мультипоточность, но это не заработало. Я пробовал это устранить, но не получилось

    from multiprocessing import Process

rty = 1

def p1():
    global t1, rty
    t1 = 1
    for z1 in range(1, g):
        t1 *= z1
        print(z1)
    rty *= t1
    return t1

def p2():
    global t2
    t2 = 1
    for z2 in range(g, h):
        t2 *= z2
        print(z2)
    rty *= t2
    return t2

def p3():
    global t3
    t3 = 1
    for z3 in range(h, j):
        t3 *= z3
        print(z3)
    rty *= t3
    return t3

def p4():
    global t4
    t4 = 1
    for z4 in range(j, k):
        t4 *= z4
        print(z4)
    rty *= t4
    return t4

def p5():
    global t5, z5
    z5 = 1
    t5 = 1
    for z5 in range(k, l):
        t5 *= z5
        print(z5)
    rty *= t5
    return t5

def p6():
    global t6
    t6 = 1
    for t7 in range(l, w + 1):
        t6 *= t7
        print(z6)
    rty *= t6
    while True:
        print(rty)
    return rty

def fact(f):
    global y, g, h, j, k, l, q, w
    z5 = 1
    y = f
    g = f // 6
    h = g + g
    j = h + g
    k = j + g
    l = k + g
    q = l + g
    w = f - q
    print(y, g, h, j, k, l, q, w)
    u1 = Process(target=p1)
    u2 = Process(target=p2)
    u3 = Process(target=p3)
    u4 = Process(target=p4)
    u5 = Process(target=p5)
    u6 = Process(target=p6)
    u1.start()
    u2.start()
    u3.start()
    u4.start()
    u5.start()
    u6.start()


def sys(s, s1):
    try:
        w = ''
        while s > 0:
            w += str(s % s1)
            s //= s1
        d = w[::-1]
        return d
    except Exception:
        return 'Mission failed'


def cal(n1: list):
#    try:
        s = n1[0]
        for i in range(1, len(n1), 2):
            if n1[i] == '+':
                s += n1[i + 1]
            elif n1[i] == '-':
                s -= n1[i + 1]
            elif n1[i] == '/':
                s /= n1[i + 1]
            elif n1[i] == '*':
                s *= n1[i + 1]
            elif n1[i] == '**':
                s **= n1[i + 1]
            elif n1[i] == '//':
                s //= n1[i + 1]
            elif n1[i] == '%':
                s %= n1[i + 1]
            elif n1[i] == '!':
                fact(n1[0])
            elif n1[i] == 'sys':
                s = sys(n1[0], n1[2])
            elif n1[i] == 'int':
                s = int(str(n1[0]), n1[2])
            else:
                return 'Выражение не распознано, попробуйте ещё'
        return s
#    except Exception:
#        return 'Mission failed'


def beprint():
    print('''Вы можете использовать следующие операции:
    + - для сложения
    - - для вычитания
    / - для деления
    * - для умножения
    ** - для возведения в степень
    // - для целочисленного деления
    % - для взятия остатка
    ! - для вычисления факториала (3 ! = 6)
    sys - для перевода числа из десятичной в любую другую систему счисления (4 sys 2 = 100)
    int - для перевода числа в десятичную систему счисления из любой другой (100 int 2 = 4)
    Для выхода из программы просто нажмите enter''')
    return None


def body():
    f = [str(i) for i in range(10)]
    while True:
        h = input('Введите выражение в правильном порядке (2 + 2): ')
        n = h.split()
        n2 = []
        n3 = []
        for i in n:
            try:
                if i[0] in f and '.' not in h:
                    n2.append(int(i))
                elif '.' in h and i[0] in f:
                    n3.append(float(i))
                else:
                    if len(n2) > 0:
                        n2.append(i)
                    elif len(n3) > 0:
                        n3.append(i)
            except Exception:
                print("Введите корректные данные")
        if len(n2) == 0 and len(n3) == 0:
            break
        if len(n2) > 0:
            print(cal(n2))
            
        else:
            print(cal(n3))


def main():
    beprint()
    body()


if __name__ == '__main__':
    main()

Ответы (0 шт):