Paralelismo em python

Fala pessoal, tudo certo? Recentemente criei um bot para o discord e estou enfrentando alguns problemas. Com o intuito de conseguir administrar o bot com mais eficiência, comecei a contruir um cli para executar comandos dentro da instância do robô, para conseguir informações em tempo real.

Porém, me deparei com um problema que não consegui resolver. O 'boot'/inicialização do bot "sequestra" a minha linha de comando "cmd", e não consigo executar mais nada depois disso. Pensei que execução em paralelo ou multiprocessamento seria uma possível solução, mas estou encontrando dificuldades. Algum mestre sagrado consegue me dar um caminho?

Segue abaixo o código e os erros enfrentados:

import os
import nest_asyncio
from multiprocessing import Process
from .src.Configs.configs import client
from .src.boot.start import start


nest_asyncio.apply()

def main():
  token = os.environ['TOKEN']
  p1 = Process(target = start)
  p2 = Process(target = client.run, args=[token])
  p1.start()
  p2.start()
  p1.join()
  p2.join()
  pass 

A linha de comando problemática é a que executa client.run. Aparentemente é um loop para "escutar" o servidor do discord. Sem ideia de como contornar isso para conseguir executar outros comandos.

Erros:

  Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "F:\Thales\subzero\sub\main.py", line 86, in <module>
    main()
  File "F:\Thales\subzero\sub\main.py", line 61, in main
    app.run()
  File "F:\Thales\subzero\sub\Lib\site-packages\cement\core\foundation.py", line 957, in run
return_val = self.controller._dispatch()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "F:\Thales\subzero\sub\Lib\site-packages\cement\ext\ext_argparse.py", line 810, in _dispatch
return func()
       ^^^^^^
  File "F:\Thales\subzero\sub\controllers\items.py", line 19, in start
start_.main()
  File "F:\Thales\subzero\sub\PomoBot\main.py", line 21, in main
p2.start()
  File "C:\Users\Thales\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\process.py", line 121, in start
self._popen = self._Popen(self)
              ^^^^^^^^^^^^^^^^^
  File "C:\Users\Thales\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Thales\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\context.py", line 336, in _Popen
return Popen(process_obj)
       ^^^^^^^^^^^^^^^^^^
  File "C:\Users\Thales\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\popen_spawn_win32.py", line 94, in __init__
reduction.dump(process_obj, to_child)
  File "C:\Users\Thales\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
AttributeError: Can't pickle local object 'WeakSet.__init__.<locals>._remove'
True
True
C:\Users\Thales\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\process.py:108: RuntimeWarning: coroutine 'start' was never awaited
  self._target(*self._args, **self._kwargs)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\Thales\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\spawn.py", line 120, in spawn_main
exitcode = _main(fd, parent_sentinel)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Thales\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\spawn.py", line 130, in _main
self = reduction.pickle.load(from_parent)
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
EOFError: Ran out of input

Olá, tudo bem?! Você pode compartilhar o link do repositório para análise do código?

Opa, segue o repo https://github.com/drakegawain/sub