Inspiration
We thought that it was weird that Python had no user friendly way of using thread-pools, so we thought that we should implement this functionality that seems very useful to us.
What it does
When handling large sets of data, the thread-pool model can often do wonders for parallelizing and thus speeding up a program. However, Python's native support for concurrency is more like polling than threading; it doesn't properly take advantage of multiple CPU cores. This can be frustrating when working in Python with a task that would be easily threadable in other languages.
Goliath enables Python to distribute a set of function calls over a set of servers. This essentially simulates the thread-pool model as a pool of servers, each maintaining a pool of Python worker processes. Additionally, these servers can be reached over the Internet, enabling a many-to-many relationship between clients requesting work and servers providing workers; each client can have work distributed across multiple servers, and each server can handle work from multiple clients.
Goliath abstracts this entire model and aggregates the results from the servers, finally returning the list of results to the coder.
How we built it
We built this using the asyncio library which let us set up thread pools and let us manage them asynchronously
Challenges we ran into
Creating the package had its challenges such as figuring out how to make it run the code we have provided.
Accomplishments that we're proud of
-Developing a custom communication protocol between the client and remote servers.
What we learned
We learned a lot about networking as well as asynchronous communication.
What's next for Goliath
Next, we want to make our package be more efficient with its resources, so it reuses its workers and it separates dynamic from static variables.
Built With
- asyncio
- python


Log in or sign up for Devpost to join the conversation.