Git Product home page Git Product logo

amped's Introduction

Hi there ๐Ÿ‘‹

amped's People

Contributors

hunterap23 avatar

Watchers

 avatar  avatar

Forkers

webclinic017

amped's Issues

[FEATURE ADD] PoolExecutor affinity iterable object wrapper functionality

Describe the feature that is being tested/implemented
Add the following functionality (and possibly test the performance of) to the PoolExecutor wrapper class:

  • No affinity handling / affinity is handled by the OS
  • List vs Tuple vs Queue performance
    • Affinity handled in a list (multiprocessing manager list)
    • Affinity stored in a tuple (requires multiprocessing manager RLock)
    • Affinity stored in a queue (multiprocessing.queue)
    • Affinity stored in deque (handle choosing between appending/popping from left or right sides)
  • Standard vs random affinity sorting
  • Standard pop/get vs random choice

List any relations to other issues in this repository or in other repositories
Related to https://github.com/HunterAP23/Python_Optimization_Tester
Might be better to test the functionality there instead of here.

[FEATURE ADD] Redesign Pool class and Pool group architecture

Describe the feature that is being tested/implemented
Redesign the architecture for creating individual pools and pool groups.
Current implementation is confusing and hard to work with.

Miscellaneous changes required:

  • Pools should have the same inputs & functionality as the underlying ThreadPoolExecutor and ProcessPoolExecutor classes, with the added ability to start with / change CPU core affinity.
  • Pools should have the following two arguments:
    • Iterable core_iter listing the individual core numbers that the pool can use. IF not definied then assume all available cores that the process can use.
    • Integer core_limit to limit how many CPU cores can be utilized at any given time. If not defined then assume all provided cores can be utilized at once.
  • Pool groups should just handle holding onto pools with an overall affinity
  • Pools inside pool groups should be given a name and/or a unique ID
  • Pool groups can use either a dictionary key or a namespace for accessing individual pools within the pool group
  • Telling a pool group to run a function without giving a name of a specific pool should run the function across all pools within the pool group.
  • Pools within pool groups can have their own affinities based on the pool group's affinity

List any relations to other issues in this repository or in other repositories
Relates to #5

[FEATURE ADD] Fix up PoolExecutor wrapper class

Describe the feature that is being tested/implemented
Add the following functionality to the PoolExecutor wrapper class:

  • Wraps around combination of Thread and Process pool classes
  • Raise "not implemented" exception when using functions not available on the specified class type
  • Add optional variable used when creating thread pools to act as a multiplier for the specified number of threads (default multiplier is 5).
    • IE: if the given number of threads was 6, and the multiplier was 1.5, then the total number provided to the super ThreadPoolExecutor would be 9.
    • This should only be applied to ThreadPoolExecutors, NOT ProcessPoolExecutors

List any relations to other issues in this repository or in other repositories
N/A

[FEATURE ADD] Add poetry functionality

Describe the feature that is being tested/implemented
Switch to poetry tool for installing and updating package dependencies, and for creating release wheels on Pypi

List any relations to other issues in this repository or in other repositories
N/A

[FEATURE ADD] Find consistent method of figuring out cores big.LITTLE structure

Describe the feature that is being tested/implemented
Find a clear and consistent method of deducing if the system uses the big.LITTLE CPU core architecture design (where the CPU has a mix of performance and efficiency cores that function differently), and if so then deduce what cores are of what type.

This method would preferably work across different operating systems and hardware.
Operating System include:

  • Windows
  • Linux
  • MacOS

Hardware (at the time of writing) includes:

  • Intel Core 12th gen CPU's
  • Apple M1 ARM SoC's (present on newer Macs / Macbooks / iPads)
  • A number of ARM-based CPU's utilized on Android devices

List any relations to other issues in this repository or in other repositories
N/A

[FEATURE ADD] Function argument validation

Describe the feature that is being tested/implemented
Validate function arguments passed into the pools and pool groups.

Use inspect.signature().parameters to find the names of the arguments used in the given functions

  • Validate initializer function, if it was provided
  • Validate function given by user

List any relations to other issues in this repository or in other repositories
N/A

[FEATURE ADD] Add code commenting and documentation

Describe the feature that is being tested/implemented
Write useful code comments and generate documentation with the sphinx tool to host on readthedocs.org

List any relations to other issues in this repository or in other repositories
N/A

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.