Как я могу перенаправить отпечатки, которые происходят в многопроцессорном пуле, в StringIO()
Я перенаправляю sys.stdout
в StringIO()
, это хорошо работает, пока я не использую pool
из библиотеки multiprocessing
.
Этот код игрушки является примером:
import io
import sys
from multiprocessing import Pool
print_file = io.StringIO()
sys.stdout = print_file
def a_print_func(some_string):
print(some_string)
pool = Pool(2)
out = pool.map(a_print_func, [['test_1','test_1'],['test_2','test_2']])
a_print_func('no_pool')
print('no_pool, no_func')
fd = open('file.txt', 'w')
fd.write(print_file.getvalue())
fd.close()
file.txt
содержит только:
no_pool
no_pool, no_func
вместо:
test_1
test_1
test_2
test_2
no_pool
no_pool, no_func