Pools not being properly closed in contexts
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
Research direction
Start at billiard.pool.Pool and inspect how the with statement handles a pool after map_async().get(). Reproduce the intensive usage described and compare it with explicit close() and join(). Done means determining whether context-managed pools leave file descriptors open and documenting or correcting the expected cleanup behavior.
Written by the indexing model from the issue text.
Description
I'm using pools under a context (a with statement) as in this example:
from billiard.pool import Pool
with Pool() as pool:
pool_map = pool.map_async(...)
output = pool_map.get()
do_other_things_with_output()
I'd expect this code to be properly closing everything, but when using it intensively, suddenly I get a filedescriptor out of range in select() error.
I've managed to somehow fix it by explicitly closing and joining the pools:
from billiard.pool import Pool
with Pool() as pool:
pool_map = pool.map_async(...)
output = pool_map.get()
pool.close()
pool.join()
do_other_things_with_output()
But such change reveals as a quite important performance drop.
Is there something I'm missing or doing wrong? Is this really the expected behabiour?
- Dominant language
- Python
- Stars
- 436
- Forks
- 273
- Avg merge
- 4d 19h
- Merged PRs (30d)
- 5
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from celery/billiard
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
-
return in finally can swallow exceptionsMay be free again @auvipy claimed this 602 days ago, and no pull request is open. Open
celery/billiard#414 · 6 comments · 3 reactions · 1 assignee ·
-
Handling numpyOpen
Difficulty 4/5 3-5 days Newbie friendliness 25/100
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
AI bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
AUTO-MAS-Project/AUTO-MAS#1960 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
btclib-org/btclib-wallet#872 ·
Maintainers usually reply within 1 day
-
[Bug]: Scheduled returns scan all accepted minion keys causing extreme loadPossibly taken A pull request linked to this issue is open or already merged. Openbug needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
saltstack/salt#70789 · 1 comment ·
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 87/100
btclib-org/btclib#3093 ·
Maintainers usually reply within 1 day