thr.pyのgc処理

2021/JAN/21

更新履歴
日付 変更内容
2020/NOV/01 新規作成
2020/NOV/17 テストプログラム
2020/NOV/29 考察
2020/DEC/05 考察続き
2021/JAN/13 ちょっと茶ぶ台返し

目次


しっくり来ない問題

thr.pyの2020/NOV/01現在のソースコード

a/thr.py
#!/usr/bin/env python

import sys
import time
import threading
import signal

import empty

try:
	import queue
except ImportError:
	import Queue as queue

event_new = threading.Event

cond_new = threading.Condition

def que_new(tmout=None, dv=None):
	q = queue.Queue()

	is_empty = lambda : q.empty()

	is_full = lambda : q.full()

	def put(v):
		q.put(v)

	def get(tmout_=None, dv_=None):
		v = dv_ if dv_ != None else dv
		try:
			tm = tmout_ if tmout_ != None else tmout
			v = q.get(timeout=tm)
		except:
			pass
		return v

	return empty.new( locals() )


def lock_new():
	rlock = threading.RLock()

	on = lock = rlock.acquire

	off = unlock = rlock.release

	return empty.new( locals() )

def seq_cnt_new():
	e = empty.new( seq=0 )

	lock = lock_new()

	def get():
		lock.on()
		seq = e.seq
		e.seq += 1
		lock.off()
		return seq

	return empty.to_attr( e, locals() )


def timer_new(sec, func, args=()):
	e = empty.new( timer=None )

	def f():
		e.timer = False # expired
		if func:
			func( *args )

	def cancel():
		if e.timer:
			e.timer.cancel()
			e.timer = None

	def start():
		if not e.timer:
			e.timer = threading.Timer( sec, f )
			e.timer.start()

	def restart():
		cancel()
		start()

	def is_timeout():
		return e.timer == False

	return empty.to_attr( e, locals() )


def th_new(target=None, args=(), gc=None):
	e = empty.new()

	quit_ev = threading.Event()
	th = None

	def func(*args):
		if e.target:
			e.target( *e.args )
		if gc:
			gc.put( e )
	def start():
		e.th = threading.Thread( target=func, args=e.args )
		e.th.daemon = True
		e.th.start()
		if gc:
			gc.lst.add( e )
	def join():
		if e.th:
			e.th.join()
			if gc:
				gc.lst.rm( e )
	def stop():
		quit_ev.set()
		join()

	return empty.to_attr( e, locals() )

def loop_new(func, args=(), wait_tmout=0, gc=None):
	th = th_new( gc=gc )

	def f():
		while not th.quit_ev.wait(wait_tmout):
			func(*args)
	th.target = f
	return th

def loop_que_new(func, que_tmout=0, wait_tmout=0, gc=None):
	que = que_new(que_tmout)

	def f():
		v = que.get()
		if v != None:
			func(v)

	th = loop_new( f, (), wait_tmout, gc )
	th.que = que
	return th

def gc_new():
	def func(th_):
		th_.join()

	th = loop_que_new( func, que_tmout=1.0 )
	th.start()

	def put(th_):
		th.que.put( th_ )

	def lst_new():
		lst = []

		def add(th_):
			lst.append( th_ )

		def rm(th_):
			if th_ in lst:
				lst.remove( th_ )

		def quit_ev_set():
			for th_ in lst:
				th_.quit_ev.set()

		return empty.new( locals() )

	lst = lst_new()

	def stop(delay_sec=None):
		lst.quit_ev_set()

		if delay_sec:
			time.sleep( delay_sec )
		while not th.que.is_empty():
			time.sleep( 1 )
		th.stop()

	return empty.new( locals() )


def sigint_new(cb=None):
	e = empty.new( done=False )

	cond = cond_new()

	def wait():
		cond.acquire()
		cond.wait()
		cond.release()

	def hdl(sig, frame):
		cond.acquire()
		e.done = True
		cond.notify_all()
		cond.release()

	th = None
	if cb:
		def func():
			wait()
			cb()
		th = loop_new( func )
		th.start()

	def fini():
		if th:
			th.stop()

	signal.signal( signal.SIGINT, hdl )

	return empty.to_attr( e, locals() )

def set_sig_func(sig, func):
	bak = signal.getsignal( sig )

	def hdl(sig, frame):
		func()
		if callable( bak ):
			bak( sig, frame )

	signal.signal( sig, hdl )

# EOF

なのですが、gc処理がしっくり来てません。

な動作なのですが、、、

まず、thrを使うプログラム冒頭の import thr 直後に、 毎回 gc = thr.gc_new() を書いてるのが、しっくり来ません。

プログラムの終了時には、gc用のthread自身を終了させるために、 gc.stop() の呼び出しが必要です。

ちょいちょいこれを忘れてしまい、 プログラム終了時に、あまりピンと来ない内容のエラーメッセージが、 threadingライブラリの底から表示されたりします。

あと、threadのstop()メソッドで終了用のイベントquit_evをセットしますが、これは性善説です。

threadで実行する関数が、quit_evを参照、あるいは待つ前提に立ってます。

この流儀に従わない「行儀の悪い」関数をthread実行すると、 stop()メソッドで、quit_evをセットした後のjoin()から戻りません。

まぁ、join()は引数でタイムアウトが設定できるので、 それを利用するのもありですが、、、

gc用のthread終了時に、走ってるthreadにquit_evセットしてまわってるものの、 行儀の悪いthreadは走り続けるのは、致し方なしですが、 このあたりの終了処理も、しっくり来ません。


statの導入

thrで生成するthreadは、かならずth_new()を経由します。

実行する関数は、th_new()の内部関数func()をラッパにして、 外部から指定された関数を実行します。

この前提で、gc用のthreadと連携させてた訳ですが、、、

せっかくこの仕組みがあるので、 簡単にthreadの状態(stat)を管理できそうです。

threading.Thread自身もis_alive()とか状態を保ってますが、 もうちょっと色々できそうなのを、独自に追加してみます。

そして、thr.pyの中に実行中のthreadのstatのリストを1つ作り、 そこからgcとしてのjoin処理や、 終了時の停止処理をさせてみたら、 「しっくり」来そうな予感です。

実装

とりあえず、既存のgc用のthreadの邪魔をできるだけしないように、 コードを追加してみました。

b/thr.py
#!/usr/bin/env python

import sys
import time
import threading
import signal

import empty

try:
	import queue
except ImportError:
	import Queue as queue

event_new = threading.Event

cond_new = threading.Condition

def que_new(tmout=None, dv=None):
	q = queue.Queue()

	is_empty = lambda : q.empty()

	is_full = lambda : q.full()

	def put(v):
		q.put(v)

	def get(tmout_=None, dv_=None):
		v = dv_ if dv_ != None else dv
		try:
			tm = tmout_ if tmout_ != None else tmout
			v = q.get(timeout=tm)
		except:
			pass
		return v

	return empty.new( locals() )


def lock_new():
	rlock = threading.RLock()

	on = lock = rlock.acquire

	off = unlock = rlock.release

	return empty.new( locals() )

def seq_cnt_new():
	e = empty.new( seq=0 )

	lock = lock_new()

	def get():
		lock.on()
		seq = e.seq
		e.seq += 1
		lock.off()
		return seq

	return empty.to_attr( e, locals() )


def timer_new(sec, func, args=()):
	e = empty.new( timer=None )

	def f():
		e.timer = False # expired
		if func:
			func( *args )

	def cancel():
		if e.timer:
			e.timer.cancel()
			e.timer = None

	def start():
		if not e.timer:
			e.timer = threading.Timer( sec, f )
			e.timer.start()

	def restart():
		cancel()
		start()

	def is_timeout():
		return e.timer == False

	return empty.to_attr( e, locals() )


def stat_lst_new():
	lst = []
	lock = lock_new()

	def add(stat):
		if stat not in lst:
			lock.on()
			lst.append( stat )
			lock.off()
	def rm(stat):
		if stat in lst:
			lock.on()
			lst.remove( stat )
			lock.off()

	def gc():
		for stat in lst[ : ]:
			stat.gc()

	def quit(tmout=None):
		for stat in lst[ : ]:
			stat.quit( tmout )

	return empty.new( locals() )

stat_lst = stat_lst_new()

def stat_new(th):
	e = empty.new()
	e.v = None
	stop_ev = event_new()

	def set(s):
		e.v = s

	def set_run():
		set( 'run' )
		stat_lst.add( e )

	def set_stop():
		set( 'stop' )
		stop_ev.set()

	def set_joined():
		stat_lst.rm( e )
		set( 'joined' )

	is_stat = lambda s: e.v == s
	is_run = lambda : is_stat( 'run' )
	is_stop = lambda : is_stat( 'stop' )
	wait_stop = lambda tmout=None: stop_ev.wait( tmout )

	def gc():
		if is_stop():
			th.join()

	def quit(tmout=None):
		if is_run():
			th.quit_ev.set()
		if wait_stop( tmout ):
			gc()

	return empty.add( e, locals() )


def th_new(target=None, args=(), gc=None):
	e = empty.new()

	quit_ev = threading.Event()
	th = None
	stat = stat_new( e )

	def func(*args):
		if e.target:
			stat.set_run()
			e.target( *e.args )
			stat.set_stop()
		if gc:
			gc.put( e )
	def start():
		stat_lst.gc()
		e.th = threading.Thread( target=func, args=e.args )
		e.th.daemon = True
		e.th.start()
		if gc:
			gc.lst.add( e )
	def join(tmout=None):
		if e.th:
			if tmout != None:
				if not stat.wait_stop( tmout ):
					return  # !
			e.th.join()
			stat.set_joined()
			if gc:
				gc.lst.rm( e )
	def stop(tmout=None):
		quit_ev.set()
		join( tmout )
		stat_lst.gc()

	return empty.to_attr( e, locals() )

def loop_new(func, args=(), wait_tmout=0, gc=None):
	th = th_new( gc=gc )

	def f():
		while not th.quit_ev.wait(wait_tmout):
			func(*args)
	th.target = f
	return th

def loop_que_new(func, que_tmout=0, wait_tmout=0, gc=None):
	que = que_new(que_tmout)

	def f():
		v = que.get()
		if v != None:
			func(v)

	th = loop_new( f, (), wait_tmout, gc )
	th.que = que
	return th

def gc_new():
	def func(th_):
		th_.join()

	th = loop_que_new( func, que_tmout=1.0 )
	th.start()

	def put(th_):
		th.que.put( th_ )

	def lst_new():
		lst = []

		def add(th_):
			lst.append( th_ )

		def rm(th_):
			if th_ in lst:
				lst.remove( th_ )

		def quit_ev_set():
			for th_ in lst:
				th_.quit_ev.set()

		return empty.new( locals() )

	lst = lst_new()

	def stop(delay_sec=None):
		lst.quit_ev_set()

		if delay_sec:
			time.sleep( delay_sec )
		while not th.que.is_empty():
			time.sleep( 1 )
		th.stop()

	return empty.new( locals() )


def sigint_new(cb=None):
	e = empty.new( done=False )

	cond = cond_new()

	def wait():
		cond.acquire()
		cond.wait()
		cond.release()

	def hdl(sig, frame):
		cond.acquire()
		e.done = True
		cond.notify_all()
		cond.release()

	th = None
	if cb:
		def func():
			wait()
			cb()
		th = loop_new( func )
		th.start()

	def fini():
		if th:
			th.stop()

	signal.signal( signal.SIGINT, hdl )

	return empty.to_attr( e, locals() )

def set_sig_func(sig, func):
	bak = signal.getsignal( sig )

	def hdl(sig, frame):
		func()
		if callable( bak ):
			bak( sig, frame )

	signal.signal( sig, hdl )

# EOF

thr_stat.patch
diff -ur a/thr.py b/thr.py
--- a/thr.py	2020-10-29 22:38:06.000000000 +0900
+++ b/thr.py	2020-11-01 00:02:09.000000000 +0900
@@ -90,31 +90,105 @@
 	return empty.to_attr( e, locals() )


+def stat_lst_new():
+	lst = []
+	lock = lock_new()
+
+	def add(stat):
+		if stat not in lst:
+			lock.on()
+			lst.append( stat )
+			lock.off()
+	def rm(stat):
+		if stat in lst:
+			lock.on()
+			lst.remove( stat )
+			lock.off()
+
+	def gc():
+		for stat in lst[ : ]:
+			stat.gc()
+
+	def quit(tmout=None):
+		for stat in lst[ : ]:
+			stat.quit( tmout )
+
+	return empty.new( locals() )
+
+stat_lst = stat_lst_new()
+
+def stat_new(th):
+	e = empty.new()
+	e.v = None
+	stop_ev = event_new()
+
+	def set(s):
+		e.v = s
+
+	def set_run():
+		set( 'run' )
+		stat_lst.add( e )
+
+	def set_stop():
+		set( 'stop' )
+		stop_ev.set()
+
+	def set_joined():
+		stat_lst.rm( e )
+		set( 'joined' )
+
+	is_stat = lambda s: e.v == s
+	is_run = lambda : is_stat( 'run' )
+	is_stop = lambda : is_stat( 'stop' )
+	wait_stop = lambda tmout=None: stop_ev.wait( tmout )
+
+	def gc():
+		if is_stop():
+			th.join()
+
+	def quit(tmout=None):
+		if is_run():
+			th.quit_ev.set()
+		if wait_stop( tmout ):
+			gc()
+
+	return empty.add( e, locals() )
+
+
 def th_new(target=None, args=(), gc=None):
 	e = empty.new()

 	quit_ev = threading.Event()
 	th = None
+	stat = stat_new( e )

 	def func(*args):
 		if e.target:
+			stat.set_run()
 			e.target( *e.args )
+			stat.set_stop()
 		if gc:
 			gc.put( e )
 	def start():
+		stat_lst.gc()
 		e.th = threading.Thread( target=func, args=e.args )
 		e.th.daemon = True
 		e.th.start()
 		if gc:
 			gc.lst.add( e )
-	def join():
+	def join(tmout=None):
 		if e.th:
+			if tmout != None:
+				if not stat.wait_stop( tmout ):
+					return  # !
 			e.th.join()
+			stat.set_joined()
 			if gc:
 				gc.lst.rm( e )
-	def stop():
+	def stop(tmout=None):
 		quit_ev.set()
-		join()
+		join( tmout )
+		stat_lst.gc()

 	return empty.to_attr( e, locals() )

コーディングしてみただけで、1ミリも試してません。

pythonのユーティリティ・プログラム 2020冬 にも未反映です。

既存のgc用のthreadを使わないようにして、 色々試してみて問題なければ、 ゆくゆく反映したく。


テストプログラム

thr_stat_test.py
#!/usr/bin/env python

import sys
import os
import signal
import time
import yaml
import select

import empty
import thr
import cmd_ut
import dbg

def f_wait_sleep(sec):
	dbg.out( 'sleep {}'.format( sec ) )
	time.sleep( sec )

def f_wait_ev(sec):
	ev = thr.event_new()
	dbg.out( 'ev.wait {}'.format( sec ) )
	ev.wait( sec )

def f_wait_select(sec):
	dbg.out( 'select {}'.format( sec ) )
	select.select( [ sys.stdin ], [], [], sec )

def test(s_new, stop, s_wait, sec, gc, n):
	dbg.out( 's_new={} stop={} s_wait={} sec={} gc={} n={}'.format( s_new, stop, s_wait, sec, gc, n ) )

	thr_gc = None
	if gc:
		thr_gc = thr.gc_new()

	f_new = eval( s_new )
	f_wait = eval( s_wait )

	def targ():
		f_wait( sec )

	ths = []
	for i in range( n ):
		th = f_new( targ, gc=thr_gc )
		th.start()
		ths.append( th )

	time.sleep( 0.5 )

	if stop:
		for th in ths:
			dbg.out( '>stop' )
			th.stop()
			dbg.out( '<stop' )

	if thr_gc:
		dbg.out( '>gc.stop' )
		thr_gc.stop()
		dbg.out( '<gc.stop' )

def make_confs():

	s = '''
- { name: s_new,  vals: [ 'thr.th_new', 'thr.loop_new' ] }
- { name: stop,   vals: [ True, False ] }
- { name: s_wait, vals: [ 'f_wait_sleep', 'f_wait_ev', 'f_wait_select' ] }
- { name: sec,    vals: [ 1, 5 ] }
- { name: gc,     vals: [ False, True ] }
- { name: n,      vals: [ 1, 2, 4 ] }
	'''.strip()

	args = empty.from_dic( yaml.load( s ) )
	for arg in args:
		arg.n = len( arg.vals )
		arg.i = 0

	def cnt_up(j):
		if j >= len( args ):
			return False  # round
		arg = args[ j ]
		arg.i += 1
		if arg.i < arg.n:
			return True
		arg.i = 0
		return cnt_up( j + 1 )

	confs = []
	while True:
		conf = dict( map( lambda arg: ( arg.name, arg.vals[ arg.i ] ), args ) )
		confs.append( conf )

		if not cnt_up(0):
			break
	return confs

def run():
	s = ' '.join( sys.argv[ 1 : ] )
	if s:
		dic = yaml.load( s )
		test( **dic )
		return

	confs = make_confs()
	for dic in confs:
		s = yaml.dump( dic, default_flow_style=True ).strip()
		cmd = '{} "{}"'.format( sys.argv[ 0 ], s )
		#dbg.out( cmd )
		proc = cmd_ut.proc_new( cmd )

		#sec = dic.get( 'sec' )
		time.sleep( 2.0 )

		#proc.kill()
		os.kill( proc.proc.pid, signal.SIGINT )
		#os.killpg( proc.proc.pid, signal.SIGINT )
		dbg.out( 'kill SIGINT' )

		proc.wait()
		dbg.out( 'wait ok\n' )

if __name__ == "__main__":
	run()
# EOF

作ってみました。

処理の内容は簡単です。

子プロセスでプログラムを実行し、 thr.pyで適当にスレッドを生成して、待機処理で寝ます。

0.5秒後にスレッドを停止させようとします。

プログラム実行から2秒後に、子プロセスにSIGINTを送り、 停止させます。

スレッドの生成 thr.th_new() thr.loop_new()
停止 th.stop()を呼ぶ th.stop()を呼ばない
スレッドで実行する待機処理 time.sleep() event.wait() select()
待機秒数 1 5
thr.gc_new() 使う 使わない
生成、停止するスレッド数 1 2 4

全パターンの組み合わせを、しゅくしゅくと実行します。

使用するthr.pyが以前の a/thr.py の場合と、 変更を加えた b/thr.py の場合で、 実行結果の出力を記録を比較してみます。

結果(macなpython3環境)

mac.a.log
s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=1
select 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=1
select 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=1
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=1
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
select 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
select 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=1
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=1
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
>stop
<stop
sleep 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
>stop
ev.wait 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
>stop
select 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>stop
ev.wait 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
sleep 1
sleep 1
sleep 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
sleep 1
sleep 1
sleep 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
select 1
<stop
>stop
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
    join()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

mac.b.log
s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=1
select 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=1
select 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=1
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=1
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
select 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
select 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=1
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=1
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
>stop
sleep 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
>stop
<stop
ev.wait 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
>stop
<stop
select 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>stop
<stop
sleep 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
ev.wait 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
sleep 1
sleep 1
>stop
sleep 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
ev.wait 1
ev.wait 1
ev.wait 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
>stop
select 1
select 1
select 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
sleep 1
sleep 1
sleep 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
ev.wait 1
ev.wait 1
ev.wait 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
select 1
select 1
select 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

$ diff -u mac.a.log mac.b.log > mac.log.diff

mac.log.diff
--- mac.a.log	2020-11-17 21:50:18.000000000 +0900
+++ mac.b.log	2020-11-17 21:56:00.000000000 +0900
@@ -81,9 +81,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -103,9 +103,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -135,9 +135,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -157,9 +157,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -189,9 +189,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -211,9 +211,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -245,11 +245,11 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -271,8 +271,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -295,25 +303,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
@@ -321,25 +312,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
@@ -361,15 +335,6 @@
 >stop
 <stop
 >gc.stop
-<gc.stop
-kill SIGINT
-wait ok
-
-s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
-select 1
->stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -378,11 +343,28 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

+s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
+select 1
+>stop
+<stop
+>gc.stop
+<gc.stop
+kill SIGINT
+wait ok
+
 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >gc.stop
@@ -408,9 +390,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -430,9 +412,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -466,9 +448,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -488,9 +470,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -524,9 +506,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -546,9 +528,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -585,8 +567,8 @@
 sleep 1
 sleep 1
 >stop
-<stop
 sleep 1
+<stop
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -596,9 +578,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -633,8 +615,8 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
+ev.wait 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -644,9 +626,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -681,8 +663,8 @@
 select 1
 select 1
 >stop
-select 1
 <stop
+select 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -692,9 +674,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -727,9 +709,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -750,9 +732,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -785,9 +767,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -808,9 +790,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -843,9 +825,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -866,9 +848,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -905,8 +887,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -915,19 +905,24 @@
 sleep 1
 >stop
 <stop
+sleep 1
 >stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
     run()
   File "./thr_stat_test.py", line 99, in run
     test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -963,8 +958,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -972,9 +975,9 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
 >stop
+ev.wait 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -983,9 +986,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1026,16 +1029,8 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
+    time.sleep( 1 )
 KeyboardInterrupt
 wait ok

@@ -1055,7 +1050,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1088,9 +1083,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1111,9 +1106,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1150,9 +1145,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1173,9 +1168,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1212,9 +1207,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1235,9 +1230,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1284,11 +1279,11 @@
 sleep 1
 sleep 1
 >stop
+<stop
 sleep 1
 sleep 1
-sleep 1
-<stop
 >stop
+sleep 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1297,9 +1292,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1346,11 +1341,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1359,9 +1354,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1408,14 +1403,28 @@
 select 1
 select 1
 >stop
+select 1
+select 1
+select 1
 <stop
 >stop
-<stop
->stop
-<stop
->stop
-<stop
 kill SIGINT
+Traceback (most recent call last):
+  File "./thr_stat_test.py", line 121, in <module>
+    run()
+  File "./thr_stat_test.py", line 99, in run
+    test( **dic )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
+KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
@@ -1448,9 +1457,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1473,9 +1482,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1514,9 +1523,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1539,9 +1548,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1580,9 +1589,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1605,9 +1614,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1654,8 +1663,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -1666,10 +1683,10 @@
 sleep 1
 >stop
 <stop
+>stop
 sleep 1
 sleep 1
 sleep 1
->stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1678,9 +1695,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1731,7 +1748,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1742,11 +1759,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1755,9 +1772,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1808,8 +1825,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -1822,10 +1847,8 @@
 <stop
 >stop
 select 1
-<stop
->stop
-<stop
->stop
+select 1
+select 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1834,9 +1857,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1879,9 +1902,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1904,9 +1927,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1949,9 +1972,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -1974,9 +1997,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -2019,9 +2042,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -2044,9 +2067,9 @@
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()

考察

ログの差分冒頭からの

     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()

のパターンが多数あります。

a/thr.py , b/thr.py 双方で e.th.join() までの呼び出しの経路は同等ですが、 ソースコードの変更で行番号が変わっているために違いが出てます。

e.th.join()の先で、結局同じメッセージ

    :
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

のために、その箇所の差分はありません。

このパターンの違いは除外して良いでしょう。

ログから複数行のパターンを削除したく。

webで検索するとsedでNコマンドを使う方法がありましたが、、、汎用的すぎてか少々難解。

かなり適当ですが、複数行のパターンを削除するだけの、テキストフィルタのツールを作ってみました。

kon_ut/del_lines.py

まず、削除したい複数行のパターンのテキストを、適当なファイルに用意します。

pat1.txt
     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()

では実行。

$ python -m del_lines pat1.txt < mac.log.diff > mac.log.diff.2

mac.log.diff.2
--- mac.a.log	2020-11-17 21:50:18.000000000 +0900
+++ mac.b.log	2020-11-17 21:56:00.000000000 +0900
@@ -81,9 +81,9 @@
@@ -103,9 +103,9 @@
@@ -135,9 +135,9 @@
@@ -157,9 +157,9 @@
@@ -189,9 +189,9 @@
@@ -211,9 +211,9 @@
@@ -245,11 +245,11 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -271,8 +271,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -295,25 +303,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
@@ -321,25 +312,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
@@ -361,15 +335,6 @@
 >stop
 <stop
 >gc.stop
-<gc.stop
-kill SIGINT
-wait ok
-
-s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
-select 1
->stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -378,11 +343,28 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

+s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
+select 1
+>stop
+<stop
+>gc.stop
+<gc.stop
+kill SIGINT
+wait ok
+
 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >gc.stop
@@ -408,9 +390,9 @@
@@ -430,9 +412,9 @@
@@ -466,9 +448,9 @@
@@ -488,9 +470,9 @@
@@ -524,9 +506,9 @@
@@ -546,9 +528,9 @@
@@ -585,8 +567,8 @@
 sleep 1
 sleep 1
 >stop
-<stop
 sleep 1
+<stop
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -596,9 +578,9 @@
@@ -633,8 +615,8 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
+ev.wait 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -644,9 +626,9 @@
@@ -681,8 +663,8 @@
 select 1
 select 1
 >stop
-select 1
 <stop
+select 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -692,9 +674,9 @@
@@ -727,9 +709,9 @@
@@ -750,9 +732,9 @@
@@ -785,9 +767,9 @@
@@ -808,9 +790,9 @@
@@ -843,9 +825,9 @@
@@ -866,9 +848,9 @@
@@ -905,8 +887,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -915,19 +905,24 @@
 sleep 1
 >stop
 <stop
+sleep 1
 >stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
     run()
   File "./thr_stat_test.py", line 99, in run
     test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -963,8 +958,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -972,9 +975,9 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
 >stop
+ev.wait 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -983,9 +986,9 @@
@@ -1026,16 +1029,8 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
+    time.sleep( 1 )
 KeyboardInterrupt
 wait ok

@@ -1055,7 +1050,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1088,9 +1083,9 @@
@@ -1111,9 +1106,9 @@
@@ -1150,9 +1145,9 @@
@@ -1173,9 +1168,9 @@
@@ -1212,9 +1207,9 @@
@@ -1235,9 +1230,9 @@
@@ -1284,11 +1279,11 @@
 sleep 1
 sleep 1
 >stop
+<stop
 sleep 1
 sleep 1
-sleep 1
-<stop
 >stop
+sleep 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1297,9 +1292,9 @@
@@ -1346,11 +1341,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1359,9 +1354,9 @@
@@ -1408,14 +1403,28 @@
 select 1
 select 1
 >stop
+select 1
+select 1
+select 1
 <stop
 >stop
-<stop
->stop
-<stop
->stop
-<stop
 kill SIGINT
+Traceback (most recent call last):
+  File "./thr_stat_test.py", line 121, in <module>
+    run()
+  File "./thr_stat_test.py", line 99, in run
+    test( **dic )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
+KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
@@ -1448,9 +1457,9 @@
@@ -1473,9 +1482,9 @@
@@ -1514,9 +1523,9 @@
@@ -1539,9 +1548,9 @@
@@ -1580,9 +1589,9 @@
@@ -1605,9 +1614,9 @@
@@ -1654,8 +1663,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -1666,10 +1683,10 @@
 sleep 1
 >stop
 <stop
+>stop
 sleep 1
 sleep 1
 sleep 1
->stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1678,9 +1695,9 @@
@@ -1731,7 +1748,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1742,11 +1759,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1755,9 +1772,9 @@
@@ -1808,8 +1825,16 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -1822,10 +1847,8 @@
 <stop
 >stop
 select 1
-<stop
->stop
-<stop
->stop
+select 1
+select 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1834,9 +1857,9 @@
@@ -1879,9 +1902,9 @@
@@ -1904,9 +1927,9 @@
@@ -1949,9 +1972,9 @@
@@ -1974,9 +1997,9 @@
@@ -2019,9 +2042,9 @@
@@ -2044,9 +2067,9 @@

ログの差分
$ diff -u mac.log.diff mac.log.diff.2
--- mac.log.diff	2020-11-17 22:10:38.000000000 +0900
+++ mac.log.diff.2	2020-11-29 23:14:44.000000000 +0900
@@ -1,83 +1,11 @@
 --- mac.a.log	2020-11-17 21:50:18.000000000 +0900
 +++ mac.b.log	2020-11-17 21:56:00.000000000 +0900
 @@ -81,9 +81,9 @@
-     test( **dic )
-   File "./thr_stat_test.py", line 52, in test
-     th.stop()
--  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
--    join()
--  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
-+    join( tmout )
-+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
-     e.th.join()
-   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-     self._wait_for_tstate_lock()
 @@ -103,9 +103,9 @@
-     test( **dic )
-   File "./thr_stat_test.py", line 52, in test
-     th.stop()
--  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
--    join()
--  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
-+    join( tmout )
-+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
-     e.th.join()
-   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-     self._wait_for_tstate_lock()
 @@ -135,9 +135,9 @@
	:

無事削除されてる様子です。

続いて次のパターン

     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

a/thr.py では

def stop(delay_sec=None):
	lst.quit_ev_set()

	if delay_sec:
		time.sleep( delay_sec )
	while not th.que.is_empty():
		time.sleep( 1 )
	th.stop()

176行目はwhileループのtime.sleep( 1 )

b/thr.py では

def stop(delay_sec=None):
	lst.quit_ev_set()

	if delay_sec:
		time.sleep( delay_sec )
	while not th.que.is_empty():
		time.sleep( 1 )
	th.stop()

251行目は th.stop()

gcのスレッドを停止するときの処理ですが、 古い方の前者は、queにスレッドが残っていて、gcスレッドが処理するのを待ってるタイミング。

新しい方の後者は、queにスレッドはなく、gcスレッドを停止するタイミング。

新しい方は、スレッドのstart(), stop()のタイミングで、 stat_lstのjoin待ちスレッド群のjoin処理を済ませてます。

よってgcの終了処理では、既にほぼjoin済みで、gc処理はあっさり終了。 gcスレッド自身のjoin処理中まで進行している様子。

このパターンも、前者、後者、同様の結果としてログの差分から削除で。

pat2.txt
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

$ python -m del_lines pat2.txt < mac.log.diff.2 > mac.log.diff.3

mac.log.diff.3
--- mac.a.log	2020-11-17 21:50:18.000000000 +0900
+++ mac.b.log	2020-11-17 21:56:00.000000000 +0900
@@ -81,9 +81,9 @@
@@ -103,9 +103,9 @@
@@ -135,9 +135,9 @@
@@ -157,9 +157,9 @@
@@ -189,9 +189,9 @@
@@ -211,9 +211,9 @@
@@ -245,11 +245,11 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -271,8 +271,16 @@

@@ -295,25 +303,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
@@ -321,25 +312,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
@@ -361,15 +335,6 @@
 >stop
 <stop
 >gc.stop
-<gc.stop
-kill SIGINT
-wait ok
-
-s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
-select 1
->stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -378,11 +343,28 @@

+s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
+select 1
+>stop
+<stop
+>gc.stop
+<gc.stop
+kill SIGINT
+wait ok
+
 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >gc.stop
@@ -408,9 +390,9 @@
@@ -430,9 +412,9 @@
@@ -466,9 +448,9 @@
@@ -488,9 +470,9 @@
@@ -524,9 +506,9 @@
@@ -546,9 +528,9 @@
@@ -585,8 +567,8 @@
 sleep 1
 sleep 1
 >stop
-<stop
 sleep 1
+<stop
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -596,9 +578,9 @@
@@ -633,8 +615,8 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
+ev.wait 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -644,9 +626,9 @@
@@ -681,8 +663,8 @@
 select 1
 select 1
 >stop
-select 1
 <stop
+select 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -692,9 +674,9 @@
@@ -727,9 +709,9 @@
@@ -750,9 +732,9 @@
@@ -785,9 +767,9 @@
@@ -808,9 +790,9 @@
@@ -843,9 +825,9 @@
@@ -866,9 +848,9 @@
@@ -905,8 +887,16 @@

@@ -915,19 +905,24 @@
 sleep 1
 >stop
 <stop
+sleep 1
 >stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
     run()
   File "./thr_stat_test.py", line 99, in run
     test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -963,8 +958,16 @@

@@ -972,9 +975,9 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
 >stop
+ev.wait 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -983,9 +986,9 @@
@@ -1026,16 +1029,8 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
+    time.sleep( 1 )
 KeyboardInterrupt
 wait ok

@@ -1055,7 +1050,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1088,9 +1083,9 @@
@@ -1111,9 +1106,9 @@
@@ -1150,9 +1145,9 @@
@@ -1173,9 +1168,9 @@
@@ -1212,9 +1207,9 @@
@@ -1235,9 +1230,9 @@
@@ -1284,11 +1279,11 @@
 sleep 1
 sleep 1
 >stop
+<stop
 sleep 1
 sleep 1
-sleep 1
-<stop
 >stop
+sleep 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1297,9 +1292,9 @@
@@ -1346,11 +1341,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1359,9 +1354,9 @@
@@ -1408,14 +1403,28 @@
 select 1
 select 1
 >stop
+select 1
+select 1
+select 1
 <stop
 >stop
-<stop
->stop
-<stop
->stop
-<stop
 kill SIGINT
+Traceback (most recent call last):
+  File "./thr_stat_test.py", line 121, in <module>
+    run()
+  File "./thr_stat_test.py", line 99, in run
+    test( **dic )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
+KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
@@ -1448,9 +1457,9 @@
@@ -1473,9 +1482,9 @@
@@ -1514,9 +1523,9 @@
@@ -1539,9 +1548,9 @@
@@ -1580,9 +1589,9 @@
@@ -1605,9 +1614,9 @@
@@ -1654,8 +1663,16 @@

@@ -1666,10 +1683,10 @@
 sleep 1
 >stop
 <stop
+>stop
 sleep 1
 sleep 1
 sleep 1
->stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1678,9 +1695,9 @@
@@ -1731,7 +1748,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1742,11 +1759,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1755,9 +1772,9 @@
@@ -1808,8 +1825,16 @@

@@ -1822,10 +1847,8 @@
 <stop
 >stop
 select 1
-<stop
->stop
-<stop
->stop
+select 1
+select 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1834,9 +1857,9 @@
@@ -1879,9 +1902,9 @@
@@ -1904,9 +1927,9 @@
@@ -1949,9 +1972,9 @@
@@ -1974,9 +1997,9 @@
@@ -2019,9 +2042,9 @@
@@ -2044,9 +2067,9 @@

考察続き

mac.log.diff.3
--- mac.a.log	2020-11-17 21:50:18.000000000 +0900
+++ mac.b.log	2020-11-17 21:56:00.000000000 +0900
@@ -81,9 +81,9 @@
@@ -103,9 +103,9 @@
@@ -135,9 +135,9 @@
@@ -157,9 +157,9 @@
@@ -189,9 +189,9 @@
@@ -211,9 +211,9 @@
@@ -245,11 +245,11 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -271,8 +271,16 @@

@@ -295,25 +303,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
@@ -321,25 +312,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
@@ -361,15 +335,6 @@
 >stop
 <stop
 >gc.stop
-<gc.stop
-kill SIGINT
-wait ok
-
-s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
-select 1
->stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -378,11 +343,28 @@

+s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
+select 1
+>stop
+<stop
+>gc.stop
+<gc.stop
+kill SIGINT
+wait ok
+
 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >gc.stop
@@ -408,9 +390,9 @@
@@ -430,9 +412,9 @@
@@ -466,9 +448,9 @@
@@ -488,9 +470,9 @@
@@ -524,9 +506,9 @@
@@ -546,9 +528,9 @@
@@ -585,8 +567,8 @@
 sleep 1
 sleep 1
 >stop
-<stop
 sleep 1
+<stop
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -596,9 +578,9 @@
@@ -633,8 +615,8 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
+ev.wait 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -644,9 +626,9 @@
@@ -681,8 +663,8 @@
 select 1
 select 1
 >stop
-select 1
 <stop
+select 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -692,9 +674,9 @@
@@ -727,9 +709,9 @@
@@ -750,9 +732,9 @@
@@ -785,9 +767,9 @@
@@ -808,9 +790,9 @@
@@ -843,9 +825,9 @@
@@ -866,9 +848,9 @@
@@ -905,8 +887,16 @@

@@ -915,19 +905,24 @@
 sleep 1
 >stop
 <stop
+sleep 1
 >stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
     run()
   File "./thr_stat_test.py", line 99, in run
     test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -963,8 +958,16 @@

@@ -972,9 +975,9 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
 >stop
+ev.wait 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -983,9 +986,9 @@
@@ -1026,16 +1029,8 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
+    time.sleep( 1 )
 KeyboardInterrupt
 wait ok

@@ -1055,7 +1050,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1088,9 +1083,9 @@
@@ -1111,9 +1106,9 @@
@@ -1150,9 +1145,9 @@
@@ -1173,9 +1168,9 @@
@@ -1212,9 +1207,9 @@
@@ -1235,9 +1230,9 @@
@@ -1284,11 +1279,11 @@
 sleep 1
 sleep 1
 >stop
+<stop
 sleep 1
 sleep 1
-sleep 1
-<stop
 >stop
+sleep 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1297,9 +1292,9 @@
@@ -1346,11 +1341,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1359,9 +1354,9 @@
@@ -1408,14 +1403,28 @@
 select 1
 select 1
 >stop
+select 1
+select 1
+select 1
 <stop
 >stop
-<stop
->stop
-<stop
->stop
-<stop
 kill SIGINT
+Traceback (most recent call last):
+  File "./thr_stat_test.py", line 121, in <module>
+    run()
+  File "./thr_stat_test.py", line 99, in run
+    test( **dic )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
+KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
@@ -1448,9 +1457,9 @@
@@ -1473,9 +1482,9 @@
@@ -1514,9 +1523,9 @@
@@ -1539,9 +1548,9 @@
@@ -1580,9 +1589,9 @@
@@ -1605,9 +1614,9 @@
@@ -1654,8 +1663,16 @@

@@ -1666,10 +1683,10 @@
 sleep 1
 >stop
 <stop
+>stop
 sleep 1
 sleep 1
 sleep 1
->stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1678,9 +1695,9 @@
@@ -1731,7 +1748,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1742,11 +1759,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1755,9 +1772,9 @@
@@ -1808,8 +1825,16 @@

@@ -1822,10 +1847,8 @@
 <stop
 >stop
 select 1
-<stop
->stop
-<stop
->stop
+select 1
+select 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1834,9 +1857,9 @@
@@ -1879,9 +1902,9 @@
@@ -1904,9 +1927,9 @@
@@ -1949,9 +1972,9 @@
@@ -1974,9 +1997,9 @@
@@ -2019,9 +2042,9 @@
@@ -2044,9 +2067,9 @@
--- mac.a.log	2020-11-17 21:50:18.000000000 +0900
+++ mac.b.log	2020-11-17 21:56:00.000000000 +0900
@@ -81,9 +81,9 @@
@@ -103,9 +103,9 @@
@@ -135,9 +135,9 @@
@@ -157,9 +157,9 @@
@@ -189,9 +189,9 @@
@@ -211,9 +211,9 @@
@@ -245,11 +245,11 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()
@@ -271,8 +271,16 @@

@@ -295,25 +303,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
@@ -321,25 +312,8 @@
 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
@@ -361,15 +335,6 @@
 >stop
 <stop
 >gc.stop
-<gc.stop
-kill SIGINT
-wait ok
-
-s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
-select 1
->stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -378,11 +343,28 @@

+s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
+select 1
+>stop
+<stop
+>gc.stop
+<gc.stop
+kill SIGINT
+wait ok
+
 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >gc.stop
@@ -408,9 +390,9 @@
@@ -430,9 +412,9 @@
@@ -466,9 +448,9 @@
@@ -488,9 +470,9 @@
@@ -524,9 +506,9 @@
@@ -546,9 +528,9 @@
@@ -585,8 +567,8 @@
 sleep 1
 sleep 1
 >stop
-<stop
 sleep 1
+<stop
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -596,9 +578,9 @@
@@ -633,8 +615,8 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
+ev.wait 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -644,9 +626,9 @@
@@ -681,8 +663,8 @@
 select 1
 select 1
 >stop
-select 1
 <stop
+select 1
 >stop
 kill SIGINT
 Traceback (most recent call last):
@@ -692,9 +674,9 @@
@@ -727,9 +709,9 @@
@@ -750,9 +732,9 @@
@@ -785,9 +767,9 @@
@@ -808,9 +790,9 @@
@@ -843,9 +825,9 @@
@@ -866,9 +848,9 @@
@@ -905,8 +887,16 @@

@@ -915,19 +905,24 @@
 sleep 1
 >stop
 <stop
+sleep 1
 >stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
     run()
   File "./thr_stat_test.py", line 99, in run
     test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
-    time.sleep( 1 )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
 KeyboardInterrupt
 wait ok

@@ -963,8 +958,16 @@

@@ -972,9 +975,9 @@
 ev.wait 1
 ev.wait 1
 >stop
-ev.wait 1
 <stop
 >stop
+ev.wait 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -983,9 +986,9 @@
@@ -1026,16 +1029,8 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
+    time.sleep( 1 )
 KeyboardInterrupt
 wait ok

@@ -1055,7 +1050,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1088,9 +1083,9 @@
@@ -1111,9 +1106,9 @@
@@ -1150,9 +1145,9 @@
@@ -1173,9 +1168,9 @@
@@ -1212,9 +1207,9 @@
@@ -1235,9 +1230,9 @@
@@ -1284,11 +1279,11 @@
 sleep 1
 sleep 1
 >stop
+<stop
 sleep 1
 sleep 1
-sleep 1
-<stop
 >stop
+sleep 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1297,9 +1292,9 @@
@@ -1346,11 +1341,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1359,9 +1354,9 @@
@@ -1408,14 +1403,28 @@
 select 1
 select 1
 >stop
+select 1
+select 1
+select 1
 <stop
 >stop
-<stop
->stop
-<stop
->stop
-<stop
 kill SIGINT
+Traceback (most recent call last):
+  File "./thr_stat_test.py", line 121, in <module>
+    run()
+  File "./thr_stat_test.py", line 99, in run
+    test( **dic )
+  File "./thr_stat_test.py", line 52, in test
+    th.stop()
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
+    e.th.join()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
+    self._wait_for_tstate_lock()
+  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
+    elif lock.acquire(block, timeout):
+KeyboardInterrupt
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
@@ -1448,9 +1457,9 @@
@@ -1473,9 +1482,9 @@
@@ -1514,9 +1523,9 @@
@@ -1539,9 +1548,9 @@
@@ -1580,9 +1589,9 @@
@@ -1605,9 +1614,9 @@
@@ -1654,8 +1663,16 @@

@@ -1666,10 +1683,10 @@
 sleep 1
 >stop
 <stop
+>stop
 sleep 1
 sleep 1
 sleep 1
->stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1678,9 +1695,9 @@
@@ -1731,7 +1748,7 @@
     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 176, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
     time.sleep( 1 )
 KeyboardInterrupt
 wait ok
@@ -1742,11 +1759,11 @@
 ev.wait 1
 ev.wait 1
 >stop
-<stop
->stop
 ev.wait 1
 ev.wait 1
 ev.wait 1
+<stop
+>stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1755,9 +1772,9 @@
@@ -1808,8 +1825,16 @@

@@ -1822,10 +1847,8 @@
 <stop
 >stop
 select 1
-<stop
->stop
-<stop
->stop
+select 1
+select 1
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -1834,9 +1857,9 @@
@@ -1879,9 +1902,9 @@
@@ -1904,9 +1927,9 @@
@@ -1949,9 +1972,9 @@
@@ -1974,9 +1997,9 @@
@@ -2019,9 +2042,9 @@
@@ -2044,9 +2067,9 @@

上から順に見てみます。

     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()

これは最初のパターン

     test( **dic )
   File "./thr_stat_test.py", line 52, in test
     th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
+    join( tmout )
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
     e.th.join()
   File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
     self._wait_for_tstate_lock()

この前に

     test( **dic )
   File "./thr_stat_test.py", line 57, in test
     thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
+  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
     th.stop()

が追加になっていて、ソースコードの変更による行番号の違いだけと思っていいでしょう。

削除で。

次。

 >stop
 <stop
 >gc.stop
+<gc.stop
 kill SIGINT
-Traceback (most recent call last):
-  File "./thr_stat_test.py", line 121, in <module>
-    run()
-  File "./thr_stat_test.py", line 99, in run
-    test( **dic )
-  File "./thr_stat_test.py", line 57, in test
-    thr_gc.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 177, in stop
-    th.stop()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 117, in stop
-    join()
-  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 112, in join
-    e.th.join()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
-    self._wait_for_tstate_lock()
-  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
-    elif lock.acquire(block, timeout):
-KeyboardInterrupt
 wait ok

このパターンが2つあります。

古い方では、gc.stop()処理中にSIGINT。

新しい方では、gc.stop()が正常に終わって終了。

gcのスレッドを停止するときの処理です。

前にもあったパターン同様、新しい方ではqueにスレッドが残ってなくてあっさり終了するので、この違いと。

正常な動作と考えらえます。削除で。

次。

 >stop
 <stop
 >gc.stop
-<gc.stop
-kill SIGINT
-wait ok
-
-s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
-select 1
->stop
-<stop
->gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -378,11 +343,28 @@

+s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
+select 1
+>stop
+<stop
+>gc.stop
+<gc.stop
+kill SIGINT
+wait ok
+
 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >gc.stop

これは、元の2つに戻すと。

古い方は

 >stop
 <stop
 >gc.stop
 <gc.stop
 kill SIGINT
 wait ok

 s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >stop
 <stop
 >gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -378,11 +343,28 @@

 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >gc.stop

新しい方は

 >stop
 <stop
 >gc.stop
 kill SIGINT
 Traceback (most recent call last):
   File "./thr_stat_test.py", line 121, in <module>
@@ -378,11 +343,28 @@

 s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >stop
 <stop
 >gc.stop
 <gc.stop
 kill SIGINT
 wait ok

 s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
 select 1
 >gc.stop

2つのテストで、gc.sop()中にSIGINTがきてるか、gc.stop()を抜けてからSIGINTがきてるか、の関係の違いがあります。

後者のテストは、これまで通り、古い方がgc.stop()処理に手間取ってるパターンです。

前者のテストは、逆に新しい方がgc.stop()処理に手間取ってるように見えます。

前者のテストとは。

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1

の1つ前

mac.b.log
s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=1
select 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=1
select 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=1
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=1
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
select 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
select 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=1
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=1
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
>stop
sleep 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
>stop
<stop
ev.wait 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
>stop
<stop
select 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>stop
<stop
sleep 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
ev.wait 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
sleep 1
sleep 1
>stop
sleep 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
ev.wait 1
ev.wait 1
ev.wait 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
>stop
select 1
select 1
select 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
sleep 1
sleep 1
sleep 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
ev.wait 1
ev.wait 1
ev.wait 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
select 1
select 1
select 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok
s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=1
select 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=1
select 1
>stop
<stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=1
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=1
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=1
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=1
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
select 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
select 1
>stop
<stop
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=1
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=1
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=1
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=1
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=1
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
>stop
sleep 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=2
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
>stop
<stop
ev.wait 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=2
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
>stop
<stop
select 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=2
select 1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=2
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=2
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=2
select 5
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>stop
<stop
sleep 1
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=2
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>stop
<stop
>stop
ev.wait 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=2
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=2
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=2
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=2
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=2
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
sleep 1
sleep 1
>stop
sleep 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=False n=4
sleep 1
sleep 1
sleep 1
sleep 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
ev.wait 1
ev.wait 1
ev.wait 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=False n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
>stop
select 1
select 1
select 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=False n=4
select 1
select 1
select 1
select 1
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=False n=4
sleep 5
sleep 5
sleep 5
sleep 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=False n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=False n=4
select 5
select 5
select 5
select 5
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>stop
<stop
>stop
sleep 1
sleep 1
sleep 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=1 gc=True n=4
sleep 1
sleep 1
sleep 1
sleep 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 250, in stop
    time.sleep( 1 )
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>stop
ev.wait 1
ev.wait 1
ev.wait 1
<stop
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=1 gc=True n=4
ev.wait 1
ev.wait 1
ev.wait 1
ev.wait 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
<stop
>stop
<stop
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>stop
<stop
>stop
select 1
select 1
select 1
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=1 gc=True n=4
select 1
select 1
select 1
select 1
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_sleep sec=5 gc=True n=4
sleep 5
sleep 5
sleep 5
sleep 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_ev sec=5 gc=True n=4
ev.wait 5
ev.wait 5
ev.wait 5
ev.wait 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.th_new stop=True s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.loop_new stop=True s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 52, in test
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

s_new=thr.th_new stop=False s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

s_new=thr.loop_new stop=False s_wait=f_wait_select sec=5 gc=True n=4
select 5
select 5
select 5
select 5
>gc.stop
<gc.stop
kill SIGINT
wait ok

より

s_new=thr.th_new stop=True s_wait=f_wait_select sec=1 gc=True n=1
select 1
>stop
<stop
>gc.stop
kill SIGINT
Traceback (most recent call last):
  File "./thr_stat_test.py", line 121, in <module>
    run()
  File "./thr_stat_test.py", line 99, in run
    test( **dic )
  File "./thr_stat_test.py", line 57, in test
    thr_gc.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 251, in stop
    th.stop()
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 190, in stop
    join( tmout )
  File "/Users/kondoh/kon_page/kon_ut/thr_stat/thr.py", line 184, in join
    e.th.join()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt
wait ok

なぜこの条件のテストでは、新しい方のgc.stop()の方が手間取るのか?


ちょっと茶ぶ台返し

さんざんぱらテストしかけておいて何ですが...

thr_stat.patch
diff -ur a/thr.py b/thr.py
--- a/thr.py	2020-10-29 22:38:06.000000000 +0900
+++ b/thr.py	2020-11-01 00:02:09.000000000 +0900
@@ -90,31 +90,105 @@
 	return empty.to_attr( e, locals() )


+def stat_lst_new():
+	lst = []
+	lock = lock_new()
+
+	def add(stat):
+		if stat not in lst:
+			lock.on()
+			lst.append( stat )
+			lock.off()
+	def rm(stat):
+		if stat in lst:
+			lock.on()
+			lst.remove( stat )
+			lock.off()
+
+	def gc():
+		for stat in lst[ : ]:
+			stat.gc()
+
+	def quit(tmout=None):
+		for stat in lst[ : ]:
+			stat.quit( tmout )
+
+	return empty.new( locals() )
+
+stat_lst = stat_lst_new()
+
+def stat_new(th):
+	e = empty.new()
+	e.v = None
+	stop_ev = event_new()
+
+	def set(s):
+		e.v = s
+
+	def set_run():
+		set( 'run' )
+		stat_lst.add( e )
+
+	def set_stop():
+		set( 'stop' )
+		stop_ev.set()
+
+	def set_joined():
+		stat_lst.rm( e )
+		set( 'joined' )
+
+	is_stat = lambda s: e.v == s
+	is_run = lambda : is_stat( 'run' )
+	is_stop = lambda : is_stat( 'stop' )
+	wait_stop = lambda tmout=None: stop_ev.wait( tmout )
+
+	def gc():
+		if is_stop():
+			th.join()
+
+	def quit(tmout=None):
+		if is_run():
+			th.quit_ev.set()
+		if wait_stop( tmout ):
+			gc()
+
+	return empty.add( e, locals() )
+
+
 def th_new(target=None, args=(), gc=None):
 	e = empty.new()

 	quit_ev = threading.Event()
 	th = None
+	stat = stat_new( e )

 	def func(*args):
 		if e.target:
+			stat.set_run()
 			e.target( *e.args )
+			stat.set_stop()
 		if gc:
 			gc.put( e )
 	def start():
+		stat_lst.gc()
 		e.th = threading.Thread( target=func, args=e.args )
 		e.th.daemon = True
 		e.th.start()
 		if gc:
 			gc.lst.add( e )
-	def join():
+	def join(tmout=None):
 		if e.th:
+			if tmout != None:
+				if not stat.wait_stop( tmout ):
+					return  # !
 			e.th.join()
+			stat.set_joined()
 			if gc:
 				gc.lst.rm( e )
-	def stop():
+	def stop(tmout=None):
 		quit_ev.set()
-		join()
+		join( tmout )
+		stat_lst.gc()

 	return empty.to_attr( e, locals() )
diff -ur a/thr.py b/thr.py
--- a/thr.py	2020-10-29 22:38:06.000000000 +0900
+++ b/thr.py	2020-11-01 00:02:09.000000000 +0900
@@ -90,31 +90,105 @@
 	return empty.to_attr( e, locals() )


+def stat_lst_new():
+	lst = []
+	lock = lock_new()
+
+	def add(stat):
+		if stat not in lst:
+			lock.on()
+			lst.append( stat )
+			lock.off()
+	def rm(stat):
+		if stat in lst:
+			lock.on()
+			lst.remove( stat )
+			lock.off()
+
+	def gc():
+		for stat in lst[ : ]:
+			stat.gc()
+
+	def quit(tmout=None):
+		for stat in lst[ : ]:
+			stat.quit( tmout )
+
+	return empty.new( locals() )
+
+stat_lst = stat_lst_new()
+
+def stat_new(th):
+	e = empty.new()
+	e.v = None
+	stop_ev = event_new()
+
+	def set(s):
+		e.v = s
+
+	def set_run():
+		set( 'run' )
+		stat_lst.add( e )
+
+	def set_stop():
+		set( 'stop' )
+		stop_ev.set()
+
+	def set_joined():
+		stat_lst.rm( e )
+		set( 'joined' )
+
+	is_stat = lambda s: e.v == s
+	is_run = lambda : is_stat( 'run' )
+	is_stop = lambda : is_stat( 'stop' )
+	wait_stop = lambda tmout=None: stop_ev.wait( tmout )
+
+	def gc():
+		if is_stop():
+			th.join()
+
+	def quit(tmout=None):
+		if is_run():
+			th.quit_ev.set()
+		if wait_stop( tmout ):
+			gc()
+
+	return empty.add( e, locals() )
+
+
 def th_new(target=None, args=(), gc=None):
 	e = empty.new()

 	quit_ev = threading.Event()
 	th = None
+	stat = stat_new( e )

 	def func(*args):
 		if e.target:
+			stat.set_run()
 			e.target( *e.args )
+			stat.set_stop()
 		if gc:
 			gc.put( e )
 	def start():
+		stat_lst.gc()
 		e.th = threading.Thread( target=func, args=e.args )
 		e.th.daemon = True
 		e.th.start()
 		if gc:
 			gc.lst.add( e )
-	def join():
+	def join(tmout=None):
 		if e.th:
+			if tmout != None:
+				if not stat.wait_stop( tmout ):
+					return  # !
 			e.th.join()
+			stat.set_joined()
 			if gc:
 				gc.lst.rm( e )
-	def stop():
+	def stop(tmout=None):
 		quit_ev.set()
-		join()
+		join( tmout )
+		stat_lst.gc()

 	return empty.to_attr( e, locals() )

この

+def stat_new(th):
	:
+	def gc():
+		if is_stop():
+			th.join()
	:

th.join()を実行するのが、自身のスレッドの場合にエラーが出ます。

などと考え出すと、色々動かなくなってしまうものがあるのかなと。

従来のAPIはそのままで、ラッパー的な作りのものを追加して、 新しく組むときは、新しい方を使おうかなと。

ラッパーな案

thr.py の従来のスレッドの生成と実行では

def th_new(target=None, args=(), gc=None):

def loop_new(func, args=(), wait_tmout=0, gc=None):

def loop_que_new(func, que_tmout=0, wait_tmout=0, gc=None):

で生成です。

loop_que_new()の主要部分はloop_new()呼び出しで、

loop_new()の主要部分はth_new()呼び出し。

結局 th_new() に依存してます。

そして、th_new() で threading.Thread() を生成するのは、

def start():
	e.th = threading.Thread( target=func, args=e.args )
	e.th.daemon = True
	e.th.start()
	if gc:
		gc.lst.add( e )

実行を開始するところまで、ひっぱって先伸ばしにしてます。

th_new()呼び出しで返った時点では、targetの関数も、関数の引数も、 仮の状態で確定してません。

ぶっちゃけ、後で何とでもなります。

そこで、ラッパーな案。

ラッパーな案のコード
def ths_new():
	lst = []
	lock = lock_new()

	def add(th):
		if th not in lst:
			lock.on()
			lst.append( th )
			lock.off()
	def rm(th):
		if th in lst:
			lock.on()
			lst.remove( th )
			lock.off()
	def gc():
		cth = threading.current_thread()
		bak_n = len( lst )
		for th in lst[ : ]:
			if th.goal and th.th != cth:
				rm( th )
				th.join()
		n = len( lst )
		#dbg.out( 'gc {} --> {}'.format( bak_n, n ) )

	def func(th):
		gc()
		if th.target:
			th.target( *th.args )
			gc()
		th.goal = True

	def start(th):
		gc()
		th.goal = False
		add( th )

		th.th = threading.Thread( target=func, args=( th, ) )
		th.th.daemon = True
		th.th.start()

	def stop_all(tm_out=5.0):
		for th in lst[ : ]:
			th.quit_ev.set()
		st = time.time()
		while lst and time.time() - st <= tm_out:
			gc()
			time.sleep( 1 )

	return empty.new( locals() )

ths = ths_new()

例えば、上記のコードを thr.py に追加。

スレッドの生成は、従来通り thr.py の

def th_new(target=None, args=(), gc=None):

def loop_new(func, args=(), wait_tmout=0, gc=None):

def loop_que_new(func, que_tmout=0, wait_tmout=0, gc=None):

を使って、仮の状態で進めておきます。

def func(s):
	print( s )

th = th_new( func, ( 'hoge', ) )
th_loop = loop_que_new( func, )

などと生成。

スレッドの実行開始では、thr.ths.start() を使います。

thr.ths.start( th )
thr.ths.start( th2 )

th2.que.put( 'foo' )
th2.que.put( 'bar' )

このstart()で、

def start(th):
	gc()
	th.goal = False
	add( th )

	th.th = threading.Thread( target=func, args=( th, ) )
	th.th.daemon = True
	th.th.start()

初めて、Thread()が生成されて、即、実行されます。

一番外側で実行されるのは、ths.func()

def func(th):
	gc()
	if th.target:
		th.target( *th.args )
		gc()
	th.goal = True

内側で、targetに設定されている関数を呼び出す前後で、gc()処理。

targetの関数呼び出しから戻ると、th.goal を True に。

def gc():
	cth = threading.current_thread()
	bak_n = len( lst )
	for th in lst[ : ]:
		if th.goal and th.th != cth:
			rm( th )
			th.join()
	n = len( lst )
	#dbg.out( 'gc {} --> {}'.format( bak_n, n ) )

前回の自身で join() してエラーの問題も、一応、対策。

スレッドが少なければ、個別に、th.join() しても良く。

面倒なら、終了処理で

thr.ths.stop_all()

を呼び出しておけば、thr.ths.start() で起動したスレッドは、 終了させようとします。

従来のコードについては、そのままそっとフタをしておいて、 新しく作る分は、この thr.ths を使っていこうかなと。