ipython / ipython/ipykernel

`concurrent.futures.ProcessPoolExecutor ` miss print

Ouverte
#373 2 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
734
Forks
412
Merge moyen
1 j 5 h
PR mergées (30 j)
8

Description

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.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.