thread.join предотвращает io.capture_output () подавление вывода командной строки в записной книжке colab / jupyter / ipyton - PullRequest
0 голосов
/ 27 июня 2019

Я использую 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()

И есть другие потоки, чьи выводы я не хочу подавлять.

...