New submission from Ethan Welty <ethan.we...@gmail.com>:

Merely importing tkinter breaks the use of parallel code on my system (Mac OSX 
10.11.6, tested on Python 2.7.13 / 2.7.14 / 3.5.0 / 3.6.4, all barebones 
distributions installed with pyenv). I've tested this with both multiprocessing 
and sharedmem (see minimal scripts below).

The issue seems to apply only to functions that evoke multithreading within 
their respective package (e.g. `numpy.matmul()`, 
`cv2.SIFT.detectAndCompute()`). If I make the matrix in the scripts below much 
smaller (e.g. change `5000` to `5`), avoiding internal multithreading, the 
scripts work.

## with `multiprocessing`

```python
import numpy as np
import multiprocessing
import _tkinter

def parallel_matmul(x):
    R = np.random.randn(3, 3)
    return np.matmul(R, x)

pool = multiprocessing.Pool(4)
results = pool.map(parallel_matmul, [np.random.randn(3, 5000) for i in 
range(2)])
```

> *Code never exits and Python has to be force quit*

## with `sharedmem`

```python
import numpy as np
import sharedmem
import _tkinter

def parallel_matmul(x):
    R = np.random.randn(3, 3)
    return np.matmul(R, x)

with sharedmem.MapReduce() as pool:
    results = pool.map(parallel_matmul,
        [np.random.randn(3, 5000) for i in range(2)])
```

> sharedmem.sharedmem.SlaveException: slave process 1 killed by signal 11

----------
components: Tkinter
messages: 314160
nosy: ezwelty
priority: normal
severity: normal
status: open
title: Merely importing tkinter breaks parallel code (multiprocessing, 
sharedmem)
type: crash
versions: Python 2.7, Python 3.5, Python 3.6, Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue33111>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to