{"id":26238526,"url":"https://github.com/nazmulnnb/processpy","last_synced_at":"2026-04-21T18:32:43.602Z","repository":{"id":57874118,"uuid":"528722346","full_name":"nazmulnnb/processpy","owner":"nazmulnnb","description":"A simple process or thread manager for python","archived":false,"fork":false,"pushed_at":"2022-08-25T06:35:50.000Z","size":6,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T04:01:54.132Z","etag":null,"topics":["python-multiprocessing","python-multithreading","python-subprocess","python-thread-manager","python-threading","thread-manager"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/processpy/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nazmulnnb.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2022-08-25T06:24:33.000Z","updated_at":"2025-03-09T12:15:11.000Z","dependencies_parsed_at":"2022-08-25T23:22:20.618Z","dependency_job_id":null,"html_url":"https://github.com/nazmulnnb/processpy","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nazmulnnb%2Fprocesspy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nazmulnnb%2Fprocesspy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nazmulnnb%2Fprocesspy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nazmulnnb%2Fprocesspy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nazmulnnb","download_url":"https://codeload.github.com/nazmulnnb/processpy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243335465,"owners_count":20274904,"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":["python-multiprocessing","python-multithreading","python-subprocess","python-thread-manager","python-threading","thread-manager"],"created_at":"2025-03-13T06:16:36.466Z","updated_at":"2025-12-24T18:39:57.463Z","avatar_url":"https://github.com/nazmulnnb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python Process Manager (processpy)\n\n\nprocesspy is simple process manager for python.\nIf you want to run multiple process for the same function, this tool is for you.\n\n* You can run multiple process of the same function concurrently.\n* You can choose to kill previous running process before running a new process of the same function.\n* You can choose to ignore new process of the same function if it's already running.\n\n\n## Installation\n\n```bash\npip install processpy\n```\n\n## Example (No concurrency and no previous kill)\n\n```python\nfrom processpy import ProcessManager\nimport time\n\ndef sum(a, b):\n    time.sleep(30)\n    print(a+b)\n\nsum_process = ProcessManager(sum, kill_previous=False, concurrent_running=False)\nsum_process.run({'a': 10, 'b': 20})\ntime.sleep(5)\n\n\"\"\"\nThe following will not run. Because concurrent run is false and kill previous is also false. So, it will simply return with doing nothing and let the previous run.\n\"\"\"\nsum_process.run({'a': 10, 'b': 20}) \n\n```\n\n## Example (No concurrency but with previous kill)\n```python\nfrom processpy import ProcessManager\nimport time\n\ndef sum(a, b):\n    time.sleep(30)\n    print(a+b)\n\nsum_process = ProcessManager(sum, kill_previous=True, concurrent_running=False)\nsum_process.run({'a': 10, 'b': 20})\ntime.sleep(5)\n\n\"\"\"\nThe following will kill the previous unfinished process and run. Because concurrent run is false and kill previous is True. So, it will simply kill the previous unfinished process. If previous one is already finished, nothing to kill. \n\"\"\"\nsum_process.run({'a': 10, 'b': 20}) \n```\n\n## Example (with concurrency)\n```python\nfrom processpy import ProcessManager\nimport time\n\ndef sum(a, b):\n    time.sleep(30)\n    print(a+b)\n\nsum_process = ProcessManager(sum, concurrent_running=True)\nsum_process.run({'a': 10, 'b': 20})\ntime.sleep(5)\n\n\"\"\"\nThe following will run alongside of the previous process. \n\"\"\"\nsum_process.run({'a': 10, 'b': 20}) \n```\n\n## You can also kill the running process (if concurrent_running=False )\n```python\nsub_process.kill()\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnazmulnnb%2Fprocesspy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnazmulnnb%2Fprocesspy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnazmulnnb%2Fprocesspy/lists"}