from isyntax import ISyntax
with ISyntax.open(slide) as wsi:
wsi.read_tile(20, 20, 0)
However when trying to do the same withing a ThreadPoolExecutor I get Segmentation fault.
from isyntax import ISyntax
from concurrent.futures import ThreadPoolExecutor
from typing import Tuple
with ISyntax.open(slide) as wsi:
def read_tile(tile: Tuple[int, int, int]):
return wsi.read_tile(tile[0], tile[1], tile[2])
tiles = [
(20, 20, 0),
(21, 20, 0)
]
with ThreadPoolExecutor(max_workers=2) as pool:
results = pool.map(read_tile, tiles)
for result in results:
print(len(result))
(running with -X faulthandler):
Fatal Python error: Segmentation fault
Current thread 0x00007fa7e3200640 (most recent call first):
File "/mnt/c/work/external/pyisyntax/isyntax/lowlevel/libisyntax.py", line 188 in tile_read
File "/mnt/c/work/external/pyisyntax/isyntax/wrapper.py", line 138 in read_tile
File "/home/er-gac/work/isyntax_test.py", line 15 in read_tile
File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58 in run
File "/usr/lib/python3.10/concurrent/futures/thread.py", line 83 in _worker
File "/usr/lib/python3.10/threading.py", line 953 in run
File "/usr/lib/python3.10/threading.py", line 1016 in _bootstrap_inner
File "/usr/lib/python3.10/threading.py", line 973 in _bootstrap
Thread 0x00007fa7e3a01640 (most recent call first):
File "/mnt/c/work/external/pyisyntax/isyntax/lowlevel/libisyntax.py", line 188 in tile_read
File "/mnt/c/work/external/pyisyntax/isyntax/wrapper.py", line 138 in read_tile
File "/home/er-gac/work/isyntax_test.py", line 15 in read_tile
File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58 in run
File "/usr/lib/python3.10/concurrent/futures/thread.py", line 83 in _worker
File "/usr/lib/python3.10/threading.py", line 953 in run
File "/usr/lib/python3.10/threading.py", line 1016 in _bootstrap_inner
File "/usr/lib/python3.10/threading.py", line 973 in _bootstrap
Thread 0x00007fa80d2f6000 (most recent call first):
File "/usr/lib/python3.10/threading.py", line 320 in wait
File "/usr/lib/python3.10/concurrent/futures/_base.py", line 453 in result
File "/usr/lib/python3.10/concurrent/futures/_base.py", line 319 in _result_or_cancel
File "/usr/lib/python3.10/concurrent/futures/_base.py", line 621 in result_iterator
File "/home/er-gac/work/isyntax_test.py", line 21 in <module>
Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, _cffi_backend (total: 14)
Segmentation fault
Not sure if this is a fault in pyisyntax, as I got the same problem when trying to make my own wrapper.
Correct me if I'm wrong, but I don't think that the authors of libisyntax make any claims of thread safety. Unfortunately there is not much I am able to do if that is indeed the case.
Hi,
I can read tiles using pyisyntax like this:
However when trying to do the same withing a
ThreadPoolExecutor
I getSegmentation fault
.(running with -X faulthandler):
Not sure if this is a fault in pyisyntax, as I got the same problem when trying to make my own wrapper.