ipython / ipython/ipykernel

`concurrent.futures.ProcessPoolExecutor ` miss print

Offen
#373 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
734
Forks
412
Ø Merge
1 T. 5 Std.
Gemergte PRs (30 T.)
8

Beschreibung

Hi, I have a jupyter notebook cell, codes show below.
```
from concurrent.futures import ProcessPoolExecutor, wait
import time

executor = ProcessPoolExecutor(4)
def is_odd(ns, i):
print('get', ns, i)
# time.sleep(10)
return [bool(n & 1) for n in ns]
```
and another cell
```
futures = []
i = 0
batch = []
for x in [1,3,5,6,7,8,9,4,12,13]:
batch.append(x)
if len(batch) == 3:
futures.append(executor.submit(is_odd, batch, i))
i += 1
batch = []

wait(futures)
print('done')
```
I run cell#1 first, then cell#2. Things go on well. **However when I run cell#2 again, there is only 'done' printed.**

If I merge these 2 cells (or put `executor = ProcessPoolExecutor(4)` in cell#2), each cell run will print out info in `is_odd` and everything is right. I uncomment the `time.sleep` line to check the program has execute the `is_odd` function.

Mac 10.14/pyenv installed python 3.7.1/ipykernel 5.1.0/jupyter 1.0.0

Run in command line program ipython is ok.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.