print () внутри функции, которая передается многопроцессорной функции apply_async (), ничего не печатает.
Я хочу в конечном итоге применить apply_async для обработки большого текстового файла в виде кусков.Поэтому я хочу, чтобы скрипт выводил на экран, сколько строк было обработано.Однако я не вижу никаких отпечатков.
Я прикрепил игрушечный код.Каждый вызов foo () должен сообщать мне, какой процесс используется.В моем реальном коде я буду вызывать foo () для каждого чанка, и он скажет мне, сколько строк текста в этом чанке я обработал.
import os
from multiprocessing import Pool
def foo(x,y):
print(f'Process: {os.getpid()}')
return(x*y)
def bar(x):
p = Pool()
result_list = []
for i in range(30):
p.apply_async(foo, args=(i,i*x), callback=result_list.append)
p.close()
p.join()
return(result_list)
if __name__ == '__main__':
print(bar(2))
Я получил распечатку из умноженияx * y результат, но я не увидел ни одной распечатки, которая бы указывала мне идентификатор процесса.
Может кто-нибудь помочь мне, пожалуйста?