0

スクリプトの上部フォーカスで定義されたこのグローバル変数を使用して

t0 = time.time() ## はグローバルです

そしてこの機能

def timestamp(t0):
... return ("[" + str(time.time()-t0)+ "] ") ## 初期開始からのタイムスタンプ

スクリプトのすべての print() にタイムスタンプを付けようとしています

print(timestamp(t0) + ""...なんでも..."")

これは機能しますが、マルチスレッドに入るときに

範囲内のスレッド ID (win32-safe_os):
... p = Process(target=fonction, args=((thread_id),"test"))
... p.start()
... thread_list.append(p)

そうするには

def fonction(thread_id,filetodo):
... print(timestamp(t0)+"Load core "+str(thread_id))
... print(timestamp(t0)+str(filetodo)+" on core "+str( thread_id))
... print(timestamp(t0)+"空きコア"+str(thread_id))

私はこの標準出力を取得します:

[2.70299983025] 297 jpg / 36087 ファイル
[2.75] マルチスレッドに入る
[2.75] Win32 検索: 2 コア
[0.0] コア 0 をロード [0.0] コア
0 でテスト
[0.0] コア 0 を解放
[0.0] コア 1 をロード
[ 0.0] コア 1 のテスト
[0.0] フリー コア 1

timestamp() と t0 への呼び出しが機能していることがわかりますが、p.start() では機能していません。どのように(そしてなぜ)修​​正する必要があるのか​​ 疑問に思っていますか?

PS : time.clock で試してみましたが、win32 ではスレッド (スクリプトではありません) の先頭を指します/

4

2 に答える 2

2

各プロセスには、グローバル変数の個別のインスタンスがあります。各プロセスに同じ値を表示させたい場合は、その値を引数として各プロセスに渡す必要があります。

于 2013-08-26T14:47:09.483 に答える