{"id":17222783,"url":"https://github.com/cheind/zmqdockertest","last_synced_at":"2025-08-08T04:41:29.327Z","repository":{"id":37678712,"uuid":"322011612","full_name":"cheind/zmqdockertest","owner":"cheind","description":null,"archived":false,"fork":false,"pushed_at":"2022-06-22T04:05:43.000Z","size":7,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T16:22:09.854Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cheind.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-16T14:44:43.000Z","updated_at":"2020-12-17T07:37:48.000Z","dependencies_parsed_at":"2022-09-15T09:02:39.606Z","dependency_job_id":null,"html_url":"https://github.com/cheind/zmqdockertest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cheind/zmqdockertest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheind%2Fzmqdockertest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheind%2Fzmqdockertest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheind%2Fzmqdockertest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheind%2Fzmqdockertest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cheind","download_url":"https://codeload.github.com/cheind/zmqdockertest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheind%2Fzmqdockertest/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269366266,"owners_count":24405237,"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","status":"online","status_checked_at":"2025-08-08T02:00:09.200Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-15T04:06:20.579Z","updated_at":"2025-08-08T04:41:29.289Z","avatar_url":"https://github.com/cheind.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## About\n\nThis minimal working example benchmarks throughput metrics for ZMQ running bare-metal or virtualized through docker. \n\n**tl/dr** ZMQ virtualized using WSL2 on Windows achieves higher throughput than bare Windows (2x) or virtualized using Windows containers (10x).\n\n## Method\nThe example code consists of single producer/consumer node interacting via `PUSH/PULL` sockets. The producer sends *N* pre-allocated messages each of size *B*. Each message contains a large byte array `np.array` and a wallclock timestamp of the sender. The consumer awaits *N* messages and performs minimal bookkeeping for throughput computation plus sanity checks. `pickle` is used for serialization of python objects.\n\nAfter the last message is consumed, the consumer \n - computes the time elapsed *E* as the difference of the current consumer wallclock time and the message timestamp of the first message received and \n - the sum of all bytes received *B*. \n \n The reported throughput is then computed as `B/E`.\n\nThe example may be run directly on the host OS or virtualized in docker. When run in bare OS, two processes are spawned. When run in Docker, two separate containers are used.\n\n## Results\n\n|Os|Container Backend|Transport|Bytes/Sec|\n|--|--|--|--|\n|Ubuntu 20.4|Linux|TCP/IP|1.4GiB/Sec|\n|Ubuntu 20.4|Linux|IPC|1.6GiB/Sec|\n|Windows 10.1904|WSL2|ICP|1.5GiB/Sec|\n|Windows 10.1904|WSL2|TCP/IP|1.5GiB/Sec|\n|Windows 10.1904|Windows Container|TCP/IP|154.4MiB/sec|\n|Windows 10.1904|no-container|TCP/IP|604.2MiB/sec|\n\n## Run\n\n### Docker\nLinux and Windows (WSL2)\n```\ndocker-compose up\n```\n\nWindows (Windows Container Backend)\n```\ndocker-compose -f docker-compose.win.yml up\n```\n\n### Bare\n```\nconda create -n zmqtest python=3.8 pip\nconda activate zmqtest\npip install -r requirements.txt\npython -m src\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheind%2Fzmqdockertest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcheind%2Fzmqdockertest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheind%2Fzmqdockertest/lists"}