Metadata-Version: 2.1
Name: multiprocessing_wrap
Version: 0.0.1
Summary: Easier multiprocessing
Home-page: https://github.com/domsleee/multiprocess
Author: Dominic Slee
Author-email: domslee1@gmail.com
License: BSD
Description: # multiprocessing_wrap
        
        A simple interface for writing concurrent scripts.
        
        ## Installation
        
        To install using pip:
        
        ~~~bash
        pip install multiprocess
        ~~~
        
        ## Usage
        
        A simple example that prints out three `1`s:
        
        ~~~python
        from multiprocessing_wrap import Multiprocess
        
        m = Multiprocess(show_loading_bar=False)
        def f():
          print(1)
        m.add_tasks(f, [(), (), ()])
        m.do_tasks()
        m.close()
        ~~~
        
        A more involved example of sorting numbers using `sleep`. Note that you only have as many workers as you have threads, so if you have 4 threads you will only be able to sort up to 4 numbers with this approach:
        ~~~python
        from multiprocessing_wrap import Multiprocess, Queue
        from time import sleep
        
        def sleep_sort():
          m = Multiprocess()
          q = Queue()
          def f(q, x):
            sleep(x)
            q.push(x)
          
          m.add_tasks(f, [(q, 1,), (q, 2,), (q, 1.5,)])
          m.do_tasks()
          m.close()
          print('SORTED')
          while not q.empty():
            print(q.pop())
        
        sleep_sort()
        ~~~
        
        
        ## Error handling
        Errors from within a process are propagated back to the parent with stack information. For example
        
        ~~~python
        from multiprocessing_wrap import Multiprocess
        
        m = Multiprocess()
        def f(x):
          raise ValueError('bad error')
        
        m.add_tasks(f, [(1,)])
        m.do_tasks()
        m.close()
        ~~~
        
        Outputs:
        
        ~~~bash
        Traceback (most recent call last):
          File "./example3.py", line 9, in <module>
            m.do_tasks()
          File "/Users/dom/Documents/git/Multiprocess/src/multiprocess.py", line 53, in do_tasks
            self._check_for_exceptions()
          File "/Users/dom/Documents/git/Multiprocess/src/multiprocess.py", line 71, in _check_for_exceptions
            "\n".join(['ERROR: ' + str(e) for e in exceptions]))
        multiprocess.MultiprocessException: 1 errors occurred:
        ERROR: Error in function call "f((1,))"
        Traceback (most recent call last):
          File "/Users/dom/Documents/git/Multiprocess/src/multiprocess.py", line 85, in my_worker
            fn(*rem_args)
          File "./example3.py", line 6, in f
            raise ValueError('bad error')
        ValueError: bad error
        ~~~
        
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Description-Content-Type: text/markdown
