Я использую from IPython.utils import io
и from IPython.utils import io
для подавления выходов функций, которые вызывают командную строку в функции, которая имеет свою собственную ячейку. Это работает даже при многопоточности, вот пример
Cell1:
import threading
from IPython.utils import io
CELL2:
def functionA():
with io.capture_output() as captured:
!pip install sql
CELL3:
with io.capture_output() as captured:
thread = threading.Thread(target=functionA)
thread.start()
И это подавит вывод !pip install sql
. Однако когда я представляю thread.join, подавление больше не происходит.
Альтернативная ячейка3:
io.capture_output() as captured:
thread = threading.Thread(target=functionA)
thread.start()
thread.join()
выход
Collecting sql
Installing collected packages: sql
Successfully installed sql-0.4.0
Есть ли другой способ подавить вывод командной строки, когда поток присоединяется, без использования io.capture_output() as captured:
on thread.join()
Причина, по которой я хочу это сделать, заключается в том, что мне нужно присоединиться к вызову командной строки с другими потоками, используя
a_threads.append(thread)
for thread in a_threads: #finishe science parser before matching the sections
thread.join()
И есть другие потоки, чьи выводы я не хочу подавлять.