で始まるローカル変数main()
を設定しようとしています:insideFCT()
main()
def insideFCT():
print "inside"
info = datetime.datetime.now()
print info
def main():
print "starting main"
insideFCT()
functionThatPrint(info) #for the example functionThatPrint() acts like print()
main()
それが私に与えるような方法を見つける必要があります:
starting main
inside
2013-09-19...
2013-09-19...
- まったく変更できません
main()
(「info = insideFCT()」を追加して return を追加できないことを意味しますinsideFCT()
) - 関数が同時に複数回使用されるため (スレッド)、グローバル変数を使用できません。
- もちろん、これは時間を取得することではなく、
datetime.datetime.now()
私が制御できない入力を表しています
私の考えは、開始時にそれぞれに固有のものを見つけmain()
、「info」をグローバル辞書に保存し、 inglobDict[TheThingSpecific]=info
を使用globDict[TheThingSpecific]
してアクセスできるようにすることですfunctionThatPrint()
(実際、functionThatPrint()
同じ関数で呼び出されるinsideFCT()
ため、同じ「特定のもの」があります)
探していた「特定の何か」を見つけました。これはthreading.current_thread()
解決:
insideFCT()
に情報を保存しますglobalDict[str(threading.current_thread())]
functionThatPrint()
同じスレッドなので、同じ行を使用してアクセスできます。globalDict[str(threading.current_thread())]