Scale Distribution Framework
Project description
Scaled
This project is aiming the target that provides simple and efficient and reliable way for distributing computing framework, centralized scheduler and stable protocol when client and worker talking to scheduler
Introduction
The goal for this project should be as simple as possible
- It built on top of zmq
- it has ready python version of Client, Scheduler, Worker
- I will provide golang or Rust version of Scheduler, the goal for the Scheduler should be completely computer language agnostic, which means they follow the same protocol
- Scheduler might support function based computing tree in the future
Installation
pip install scaled
if you want to use uvloop, please do: pip install uvloop
, default we are using python builtin uvloop
How to use it
Start local scheduler and cluster at the same time in the code
import random
from scaled.client import Client
from scaled.cluster.combo import SchedulerClusterCombo
def calculate(sec: int):
return sec * 1
def main():
address = "tcp://127.0.0.1:2345"
cluster = SchedulerClusterCombo(address=address, n_workers=10, event_loop="uvloop")
client = Client(address=address)
tasks = [random.randint(0, 100) for _ in range(100000)]
futures = [client.submit(calculate, i) for i in tasks]
results = [future.result() for future in futures]
assert results == tasks
client.disconnect()
cluster.shutdown()
if __name__ == "__main__":
main()
Start scheduler and cluster independently
use scaled_scheduler
to start scheduler, for example:
scaled_scheduler tcp://0.0.0.0:8516
use scaled_cluster
to start 10 workers:
scaled_worker -n 10 tcp://127.0.0.1:8516
for detail options of above 2 program, please use argument -h
to check out all available options
Then you can write simply write client code as:
from scaled.client import Client
def foobar(foo: int):
return foo
client = Client(address="tcp://127.0.0.1:2345")
future = client.submit(foobar, 1)
print(future.result())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file scaled-0.27.tar.gz
.
File metadata
- Download URL: scaled-0.27.tar.gz
- Upload date:
- Size: 24.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54be34432712ba57c31e4371ebd88f10f781ed8894975af456243cf6a2c392da |
|
MD5 | a7a85300e2a1d57755cf9df624c7e890 |
|
BLAKE2b-256 | b25aff261a8918e8d84307ba2161cd80d143a5f8080cff17b44830c8b4b71b39 |
File details
Details for the file scaled-0.27-py3-none-any.whl
.
File metadata
- Download URL: scaled-0.27-py3-none-any.whl
- Upload date:
- Size: 36.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f2593a518d6074c71b1016587e34da0965d33db5bb748be8cd4f24c6b3d4849 |
|
MD5 | 48c5e6e0c4a4d2e2f7788aba32e18253 |
|
BLAKE2b-256 | 2f5f3b83bcefaf204ae5e7d59b5628d96c87b0f3ce186652896c794ecbba6ee1 |