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

Method worker_loop

src/pybind/docling_threaded_renderer.h:66–175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64 }
65
66 inline void docling_threaded_renderer::worker_loop()
67 {
68 using clock_type = std::chrono::steady_clock;
69
70 while(true)
71 {
72 std::pair<std::string, int> task;
73 {
74 std::lock_guard<std::mutex> lock(task_mutex);
75
76 if(task_queue.empty())
77 {
78 break;
79 }
80
81 task = task_queue.front();
82 task_queue.pop();
83 }
84
85 const std::string& doc_key = task.first;
86 int page_number = task.second;
87
88 page_render_result result;
89 result.doc_key = doc_key;
90 result.page_number = page_number;
91
92 try
93 {
94 auto itr = key2doc.find(doc_key);
95 if(itr == key2doc.end())
96 {
97 result.success = false;
98 result.error_message = "Document key not found: " + doc_key;
99 }
100 else
101 {
102 auto& doc_decoder = itr->second;
103
104 auto total_start = clock_type::now();
105
106 auto stage_start = clock_type::now();
107 auto page_decoder = doc_decoder->make_thread_safe_page_decoder(
108 page_number,
109 config.keep_qpdf_warnings);
110 result.timings.make_page_decoder_s
111 = std::chrono::duration<double>(clock_type::now() - stage_start).count();
112
113 stage_start = clock_type::now();
114 page_decoder->decode_page(config);
115 result.timings.decode_page_s
116 = std::chrono::duration<double>(clock_type::now() - stage_start).count();
117
118 if(config.create_word_cells)
119 {
120 stage_start = clock_type::now();
121 page_decoder->create_word_cells(config);
122 result.timings.create_word_cells_s
123 = std::chrono::duration<double>(clock_type::now() - stage_start).count();

Callers

nothing calls this directly

Calls 12

frontMethod · 0.80
get_canvasMethod · 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