{"id":16406769,"url":"https://github.com/jmercouris/asynchronous_queue","last_synced_at":"2025-10-27T22:33:47.296Z","repository":{"id":146230209,"uuid":"103880098","full_name":"jmercouris/asynchronous_queue","owner":"jmercouris","description":"Asynchronous Task Execution Library","archived":false,"fork":false,"pushed_at":"2017-09-18T02:13:01.000Z","size":34,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-05T15:44:05.816Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmercouris.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-18T02:11:34.000Z","updated_at":"2023-05-20T10:42:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"c1a69c88-9f1c-4d19-844c-9d0e45c5b1da","html_url":"https://github.com/jmercouris/asynchronous_queue","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmercouris%2Fasynchronous_queue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmercouris%2Fasynchronous_queue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmercouris%2Fasynchronous_queue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmercouris%2Fasynchronous_queue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmercouris","download_url":"https://codeload.github.com/jmercouris/asynchronous_queue/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240380708,"owners_count":19792348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T06:10:54.732Z","updated_at":"2025-10-27T22:33:42.259Z","avatar_url":"https://github.com/jmercouris.png","language":"Python","readme":"Asynchronous Task Execution Library\n================================================================================\nThis library is used for executing several functions in parallel. The execution\nstart order of the functions is guaranteed. That is, given the functions in a\nlist: function1, function2, function3. Function1 will start first, function2\nsecond, function3, third, etc. What is not guaranteed is that the functions will\nterminate in order, that is, there is no blocking for function start based on the\ncompletion of a previous function.\n\nRequirements\n--------------------------------------------------------------------------------\nThe requirements to run this software are:\n\n- Python 3.4+\n\nRunning the Example Code\n--------------------------------------------------------------------------------\nTo run the example code without installing this module, simply navigate to the\nproject root directory (the directory that contains the README.rst). Then execute\nthe command `python -m example.main` to run the example as a module.\n\nRunning the Tests\n--------------------------------------------------------------------------------\nTo run the tests without installing this module, navigate to the root project\ndirectory and execute `python -m pytest test/`.\n\nHigh Level Architecture\n--------------------------------------------------------------------------------\nThe AsynchronousQueue class has a LocalQueue object. This object behaves like\nany other first in first out queue. We add objects to the queue and consume\nthem in the order that we added them.\n\nTo this LocalQueue we add Task objects.\nTask objects are containers that maintain a reference to the function we wish\nto execute, and the callback we wish to invoke upon the function completion.\n\nUpon starting, the AsynchronousQueue will begin consuming tasks from the LocalQueue\nand launching new threads for every Task. The amount of threads that will\nsimultaneously be running is bound by a parameter called 'parallelism'.\nThis parameter will prevent the AsynchronousQueue from launching new task threads\nuntil a thread terminates. The AsynchronousQueue will know\nwhen a thread has terminated because it will be notified by a callback.\n\nUpon the completion of all tasks in the LocalQueue, the AsynchronousQueue will\nstop running.\n\nNotes\n--------------------------------------------------------------------------------\nThis Library is built with no external dependencies from the default Python\nlibrary. The name AsynchronousQueue was chosen for the library name to avoid\nnamespace collisions with the default Python Queue module. This module could\nbe further expanded by allowing for the passing of arguments to the callback\nand/or changing the way arguments are currently passed to the function.\n\nLicense\n--------------------------------------------------------------------------------\nThis software is licensed under the GNU GPL V3. Which can be found \n`here \u003chttps://www.gnu.org/licenses/gpl-3.0.en.html\u003e`_\n\nVersion\n--------------------------------------------------------------------------------\n0.1-alpha\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmercouris%2Fasynchronous_queue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmercouris%2Fasynchronous_queue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmercouris%2Fasynchronous_queue/lists"}