簡體   English   中英

已解決:Python 多處理 imap BrokenPipeError: [Errno 32] Broken pipe pdftoppm

[英]Solved: Python multiprocessing imap BrokenPipeError: [Errno 32] Broken pipe pdftoppm

首先讓我說,這不是其他類似問題的重復,人們傾向於更密切地管理工人池。

在使用 multiprocessing.Pool.imap 時,我一直在努力解決我的代碼拋出的以下異常:

  File "/usr/local/bin/homebrew/Cellar/python@2/2.7.17/lib/python2.7/multiprocessing/process.py", line 267, in _bootstrap
    self.run()
  File "/usr/local/bin/homebrew/Cellar/python@2/2.7.17/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/bin/homebrew/Cellar/python@2/2.7.17/lib/python2.7/multiprocessing/pool.py", line 122, in worker
    put((job, i, (False, wrapped)))
  File "/usr/local/bin/homebrew/Cellar/python@2/2.7.17/lib/python2.7/multiprocessing/queues.py", line 390, in put
    return send(obj)
IOError: [Errno 32] Broken pipe

在執行以下主程序時,會在不同的點出現這種情況:

    pool = mp.Pool(num_workers)
    # Calculate a good chunksize (based on implementation of pool.map)
    chunksize, extra = divmod(lengthData, 4 * num_workers)
    if extra:
        chunksize += 1

    func = partial(pdf_to_txt, input_folder=inputFolder, junk_folder=imageJunkFolder, out_folder=outTextFolder,
                   log_name=log_name, log_folder=None,
                   empty_log=False, input_folder_iterator=None,
                   print_console=True)

    flag_vec = pool.imap(func, (dataFrame['testo accordo'][i] for i in range(lengthData)), chunksize)
    dataFrame['flags_conversion'] = pd.Series(flag_vec)
    dataFrame.to_excel("{0}logs/{1}.xlsx".format(outTextFolder, nameOut))
    pool.close()
    pool.join()

僅供參考,部分函數采用非 OCR PDF 文件,將它們拆分為每個頁面的圖像,並使用 pytesseract 運行 OCR。

我在以下機器上運行代碼:

This is a physical machine (PowerEdge R930) running RedHat 7.7 (Linux 3.10.0).

Processor:  Intel(R) Xeon(R) CPU E7-8880 v3 @ 2.30GHz (x144)
Memory:     1.48 TiB
Swap:       7.81 GiB
Uptime:     21 days

也許我應該降低塊大小? 我真的不清楚。 我注意到當服務器上可用的工作人員較少時,代碼似乎工作得更好......

經過一番痛苦,我發現問題出在pdftoppm(即使用pdf2image)上。 看來 pdftoppm 有時會卡住而不會引發任何異常。

如果有人遇到這個問題,我強烈建議切換到 PyMuPDF 從 pdf 中提取圖像。 它更快更穩定!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM