MCPcopy Create free account
hub / github.com/docling-project/docling-parse / worker_loop

Method worker_loop

src/pybind/docling_threaded_parser.h:30–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28 };
29
30 inline void docling_threaded_parser::worker_loop()
31 {
32 using clock_type = std::chrono::steady_clock;
33
34 while(true)
35 {
36 std::pair<std::string, int> task;
37 {
38 std::lock_guard<std::mutex> lock(task_mutex);
39
40 if(task_queue.empty())
41 {
42 break;
43 }
44
45 task = task_queue.front();
46 task_queue.pop();
47 }
48
49 const std::string& doc_key = task.first;
50 int page_number = task.second;
51
52 page_decode_result result;
53 result.doc_key = doc_key;
54 result.page_number = page_number;
55
56 try
57 {
58 auto itr = key2doc.find(doc_key);
59 if(itr == key2doc.end())
60 {
61 result.success = false;
62 result.error_message = "Document key not found: " + doc_key;
63 }
64 else
65 {
66 auto& doc_decoder = itr->second;
67
68 auto total_start = clock_type::now();
69
70 auto stage_start = clock_type::now();
71 auto page_decoder = doc_decoder->make_thread_safe_page_decoder(
72 page_number,
73 config.keep_qpdf_warnings);
74 result.timings.make_page_decoder_s
75 = std::chrono::duration<double>(clock_type::now() - stage_start).count();
76
77 stage_start = clock_type::now();
78 page_decoder->decode_page(config);
79 result.timings.decode_page_s
80 = std::chrono::duration<double>(clock_type::now() - stage_start).count();
81
82 if(config.create_word_cells)
83 {
84 stage_start = clock_type::now();
85 page_decoder->create_word_cells(config);
86 result.timings.create_word_cells_s
87 = std::chrono::duration<double>(clock_type::now() - stage_start).count();

Callers

nothing calls this directly

Calls 10

frontMethod · 0.80
to_stringFunction · 0.50
emptyMethod · 0.45
endMethod · 0.45
countMethod · 0.45
decode_pageMethod · 0.45
create_word_cellsMethod · 0.45
create_line_cellsMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected