2016-05-08 30 views
2

私はスレッドを持っており、終了するときにいくつかのフラグを変更したいと思います。たとえば:閉じるコールバックでPythonスレッディング

import threading 

def on_done(): 
    # do some printing or change some flags 

def worker(): 
    # do some calculations 

t = threading.Thread(target=worker, on_close=on_done) 
t.start() 

しかし、私はそのような方法を見つけることができませんでした。どのように私はそれをどうにかして管理することができる任意のアイデア?ワーカー関数はseparetファイルに入っているので、フラグを知らない。

Thaksは事前に

+0

PythonはGIL(Global Interpreter Lock)で動作することを覚えておいてください。したがって、スレッドは同時に実行されますが、並列には実行されません。つまり、フラグの値を変更するために何も特別なものを必要とせず、ワーカーと同じスコープから変更して、それ以降はon_doneを呼び出します。 – Hamlett

+0

[GIL](https://wiki.python.org/moin/GlobalInterpreterLock) – Hamlett

答えて

1

一つのオプションは、単に労働者機能ラップすることです。そして、

def wrapped_worker(): 
    worker() 
    on_done() 

を、wrapped_workerにターゲットを設定します。

t = threading.Thread(target=wrapped_worker, on_close=on_done) 

は、より多くのインのためthis answerを参照してください。深さの例。

関連する問題