隨着劇本上焦點理解爲什麼多線程無法讀取全局變量
T0 =了time.time()##定義這個全局變量是全球
這個功能
DEF時間戳(T0):
衝壓
...返回( 「[」 + STR(了time.time() - T 0)+ 「]」)##從時間初始啓動
我想我的時間戳腳本的每個打印()與
打印(時間戳(T0)+ 「」 ...什麼... 「」)
這工作,但是當我被
在範圍的thread_id enterring多線程(Win32的safe_os):
... p =處理(目標= fonction,ARGS =((的thread_id), 「測試」 ))
... p.start()
... thread_list.append(P)
爲了
DEF fonction(的thread_id,filetodo):
...打印(timestamp(t0)+「加載核心」+ str(thread_id))
... print(timestamp(t0)+ str(filetodo)+「on core」+ str(thread_id))
... print (timestamp(t0)+「Free core」+ str(thread_id))
我得到這個標準輸出:
[2.70299983025] 297 JPG/36087文件
[2.75] Enterring多線程
[2.75]的Win32發現:2芯(S)
[0.0]負載核心0
[0.0]關於核心試驗0
[0.0]免費核心0
[0.0]負載芯1
[0.0]於核心試驗1
[0.0]免芯1
我可以看到,我的呼叫到時間戳()並且t0正在工作,但不在p.start()中。我想知道如何(以及爲什麼)我需要糾正?
PS:我試圖與time.clock,但在Win32中是指一個線程(不是腳本)的開始/
只是想指出你正在創建一個新的進程,而不是一個新的線程。 –
您應該使用代碼塊而不是代碼塊。用4個空格縮進每個代碼塊。或者選擇塊並按下CTRL + K。 –
線程(同一進程)在共享內存空間中運行,而進程在單獨的內存空間中運行。 < - 好的,我明白了...... THX GREG! –