+ queue = [(self, url, folder) for url in queue]
+
+ pool = multiprocessing.Pool(self.size, init_worker)
+ [pool.apply_async(download_wrapper, args=item) for item in queue]
+
+ pool.close()
+ pool.join()
+
+
+def download_wrapper(obj, url, folder=''):
+ if sys.platform == 'darwin' or semaphore.get_value():
+ return Downloader.download_(obj, url=url, folder=folder)
+ else:
+ return -3, None
+
+
+def init_worker():
+ signal.signal(signal.SIGINT, subprocess_signal)
+