99from .errors import DataJointError , LostConnectionError
1010import signal
1111import multiprocessing as mp
12+ import contextlib
1213
1314# noinspection PyExceptionInherit,PyCallingNonCallable
1415
@@ -158,7 +159,7 @@ def populate(
158159 max_calls = None ,
159160 display_progress = False ,
160161 processes = 1 ,
161- make_kwargs = None
162+ make_kwargs = None ,
162163 ):
163164 """
164165 ``table.populate()`` calls ``table.make(key)`` for every primary key in
@@ -206,14 +207,14 @@ def handler(signum, frame):
206207 elif order == "random" :
207208 random .shuffle (keys )
208209
209- logger .info ("Found %d keys to populate" % len (keys ))
210+ logger .debug ("Found %d keys to populate" % len (keys ))
210211
211212 keys = keys [:max_calls ]
212213 nkeys = len (keys )
213214 if not nkeys :
214215 return
215216
216- processes = min (* ( _ for _ in (processes , nkeys , mp .cpu_count ()) if _ ) )
217+ processes = min (_ for _ in (processes , nkeys , mp .cpu_count ()) if _ )
217218
218219 error_list = []
219220 populate_kwargs = dict (
@@ -235,17 +236,16 @@ def handler(signum, frame):
235236 del self .connection ._conn .ctx # SSLContext is not pickleable
236237 with mp .Pool (
237238 processes , _initialize_populate , (self , jobs , populate_kwargs )
238- ) as pool :
239- if display_progress :
240- with tqdm (desc = "Processes: " , total = nkeys ) as pbar :
241- for error in pool .imap (_call_populate1 , keys , chunksize = 1 ):
242- if error is not None :
243- error_list .append (error )
244- pbar .update ()
245- else :
246- for error in pool .imap (_call_populate1 , keys ):
247- if error is not None :
248- error_list .append (error )
239+ ) as pool , (
240+ tqdm (desc = "Processes: " , total = nkeys )
241+ if display_progress
242+ else contextlib .nullcontext ()
243+ ) as progress_bar :
244+ for error in pool .imap (_call_populate1 , keys , chunksize = 1 ):
245+ if error is not None :
246+ error_list .append (error )
247+ if display_progress :
248+ progress_bar .update ()
249249 self .connection .connect () # reconnect parent process to MySQL server
250250
251251 # restore original signal handler:
@@ -275,7 +275,7 @@ def _populate1(
275275 if jobs is not None :
276276 jobs .complete (self .target .table_name , self ._job_key (key ))
277277 else :
278- logger .debug ("Populating: " + str ( key ) )
278+ logger .debug (f"Making { key } -> { self . target . full_table_name } " )
279279 self .__class__ ._allow_insert = True
280280 try :
281281 make (dict (key ), ** (make_kwargs or {}))
@@ -288,6 +288,9 @@ def _populate1(
288288 exception = error .__class__ .__name__ ,
289289 msg = ": " + str (error ) if str (error ) else "" ,
290290 )
291+ logger .debug (
292+ f"Error making { key } -> { self .target .full_table_name } - { error_message } "
293+ )
291294 if jobs is not None :
292295 # show error name and error message (if any)
293296 jobs .error (
@@ -303,6 +306,9 @@ def _populate1(
303306 return key , error if return_exception_objects else error_message
304307 else :
305308 self .connection .commit_transaction ()
309+ logger .debug (
310+ f"Success making { key } -> { self .target .full_table_name } "
311+ )
306312 if jobs is not None :
307313 jobs .complete (self .target .table_name , self ._job_key (key ))
308314 finally :
0 commit comments