[issue22361] Ability to join() threads in concurrent.futures.ThreadPoolExecutor

2014-09-09 Thread Luca Falavigna

Luca Falavigna added the comment:

There is indeed little benefit in freeing up resources left open by a unused 
thread, but it could be worth closing it for specific needs (e.g. thread 
processes sensible information) or in embedded systems with very low resources.

--

___
Python tracker 
<http://bugs.python.org/issue22361>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22361] Ability to join() threads in concurrent.futures.ThreadPoolExecutor

2014-09-08 Thread Luca Falavigna

New submission from Luca Falavigna:

I have a program which waits for external events (mostly pyinotify events), and 
when events occur a new worker is created using 
concurrent.futures.ThreadPoolExecutor. The following snippet represents shortly 
what my program does:

from time import sleep
from concurrent.futures import ThreadPoolExecutor

def func():
print("start")
sleep(10)
print("stop")

ex = ThreadPoolExecutor(1)

# New workers will be scheduled when an event
# is triggered (i.e. pyinotify events)
ex.submit(func)

# Dummy sleep
sleep(60)

When func() is complete, I'd like the underlying thread to be terminated. I 
realize I could call ex.shutdown() to achieve this, but this would prevent me 
from adding new workers in case new events occur. Not calling ex.shutdown() 
leads to have unfinished threads which pile up considerably:

(gdb) run test.py
Starting program: /usr/bin/python3.4-dbg test.py
[Thread debugging using libthread_db enabled]
[New Thread 0x7688e700 (LWP 17502)]
start
stop
^C
Program received signal SIGINT, Interrupt.
0x76e41963 in select () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) info threads
  Id   Target Id Frame
  2Thread 0x7688e700 (LWP 17502) "python3.4-dbg" 0x77bce420 in 
sem_wait () from /lib/x86_64-linux-gnu/libpthread.so.0
* 1Thread 0x77ff1700 (LWP 17501) "python3.4-dbg" 0x76e41963 in 
select () from /lib/x86_64-linux-gnu/libc.so.6
(gdb)

Would it be possible to add a new method (or a ThreadPoolExecutor option) which 
allows to join the underlying thread when the worker function returns?

--
components: Library (Lib)
messages: 226569
nosy: dktrkranz
priority: normal
severity: normal
status: open
title: Ability to join() threads in concurrent.futures.ThreadPoolExecutor
type: enhancement
versions: Python 3.4

___
Python tracker 
<http://bugs.python.org/issue22361>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com