diff --git a/integration_tests/test_client_integrated.py b/integration_tests/test_client_integrated.py index 9ede85a3..e60b5697 100644 --- a/integration_tests/test_client_integrated.py +++ b/integration_tests/test_client_integrated.py @@ -6,10 +6,8 @@ import sys import json import numpy as np -import dill from test_data import (render_host, render_port, client_script_location, tilespec_file, tform_file, test_pool_size) -from pathos.multiprocessing import ProcessingPool as Pool import PIL root = logging.getLogger() @@ -101,14 +99,15 @@ def test_import_jsonfiles_parallel( validate_stack_import(render, stack, tilespecs) renderapi.stack.delete_stack(stack, render=render) - +def square(x): + return x**2 def test_import_jsonfiles_parallel_multiple( render, render_example_tilespec_and_transforms, poolsize=test_pool_size): stacks = ['testmultiple1', 'testmultiple2', 'testmultiple3'] mylist = range(10) for stack in stacks: with renderapi.client.WithPool(poolsize) as pool: - results = pool.map(lambda x: x**2, mylist) + results = pool.map(square, mylist) test_import_jsonfiles_parallel( render, render_example_tilespec_and_transforms, stack, poolsize=poolsize) @@ -272,3 +271,4 @@ def test_call_run_ws_client_renderclient(render, teststack): render.DEFAULT_PROJECT, teststack) + [zvalues[0]] assert not renderapi.client.call_run_ws_client( test_class, add_args=args, subprocess_mode='call', renderclient=render) + diff --git a/renderapi/client.py b/renderapi/client.py index 87c16495..710409f1 100755 --- a/renderapi/client.py +++ b/renderapi/client.py @@ -13,7 +13,7 @@ from .utils import NullHandler, renderdump_temp, fitargspec from .render import RenderClient, renderaccess, Render, format_preamble, format_baseurl from .stack import set_stack_state, make_stack_params -from pathos.multiprocessing import ProcessingPool as Pool +from multiprocessing.pool import Pool # setup logger logger = logging.getLogger(__name__) @@ -77,15 +77,15 @@ def renderclientaccess(f, *args, **kwargs): class WithPool(Pool): - """pathos ProcessingPool with functioning __exit__ call + """Multiprocessing.pool.Pool with functioning __exit__ call Parameters ---------- *args variable length argument list matching input - to pathos.multiprocessing.Pool + to multiprocessing.pool.Pool **kwargs - keyword argument input matching pathos.multiprocessing.Pool + keyword argument input matching multiprocessing.pool.Pool Examples -------- @@ -96,8 +96,12 @@ class WithPool(Pool): def __init__(self, *args, **kwargs): super(WithPool, self).__init__(*args, **kwargs) + def __enter__(self): + return self + def __exit__(self, *args, **kwargs): - super(WithPool, self)._clear() + self.close() + self.join() @renderclientaccess @@ -1111,3 +1115,4 @@ def pointMatchClient(stack, collection, tile_pairs, memGB=memGB, client_script=client_script, subprocess_mode=subprocess_mode, add_args=argvs, **kwargs) + \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index f56d3209..27c007c4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,5 @@ requests numpy pillow -dill>=0.2.6 -pathos sphinxcontrib-napoleon decorator