多執行緒時的螢幕列印資訊

2021-05-27 09:27:18 字數 1464 閱讀 2465

今天寫了一下多執行緒指令碼,準備跑個測試。結果螢幕輸出的列印資訊看的我直頭暈。只好寫個簡單的,只有三個執行緒的指令碼,看看發生了什麼。

然後我就明白了,同時向乙個終端,比如乙個idle裡面輸出列印資訊,也是利用cpu的時間片。雖然由於gil的存在,python只能利用乙個核,但是,依然會按照時間分片進行指令的操作。

把資訊輸出到文字檔案裡,看起來就正常了。

**如下:

import threading,time

class mythread(threading.thread):

def __init__(self,threadname):

threading.thread.__init__(self, name=threadname)

def run(self):

f_name = str(self.getname()) + '.txt'

f = file(f_name, 'a')

for i in range(1,11):

print self.getname() ," ", i

time.sleep(1)

msg = str(self.getname())+ " "+str(i)+ '\n'

f.write(msg)

f.close()

if __name__ == '__main__':

for i in range(1,4):

t_name = 'thread' + str(i)

obj = mythread(t_name)

obj.start()

time.sleep(1)

print obj

如果只看idle,那麼列印資訊是亂成這樣的:

thread1   1

thread1

thread2    2

1thread3   1

thread1thread2      32

thread3

thread1

>>>   thread2   2  4 3

thread3thread1      35

thread2   4

thread3thread1      46

thread2   5

thread3thread1      57

thread2   6

thread1thread3      86

thread2   7

thread1   9

thread2thread3      87

thread1thread2      109thread3

8thread2   10

thread3   9

thread3   10

如果再看生成的thread1.txt,  thread2.txt , thread3.txt文字檔案,裡面就是正常的了。

串列埠列印資訊的奇怪問題

遇到的問題 自己解決加入串列埠列印資訊碰到了鬱悶的事情。剛開始,我只想把c wince500 public common oak drivers serial com mdd2編譯成debug版本,來列印資訊的。我採用了如下方法 第一種 將下面這句 加入到驅動所在目錄中的sources檔案中即可 c...

ACE TRACE main 不列印資訊的原因

我們知道ace日誌巨集是否產生日誌方法呼叫,由三個配置在編譯時的值決定 ace ntrace ace ndebug,以及ace nlogging。要啟用相應的日誌巨集,需要定義相應的巨集。ace ntrace預設為1 禁用 ace ndebug和ace nlogging預設為未定義 啟用 通過在包含...

WinCE BSP中列印資訊的實現介紹

不管在wince5.0還是在wince6.0中,我們在除錯驅動或者應用的時候都會用到列印函式。在驅動裡面,我們可能會用debugmsg retailmsg 還有nkdbgprintfw 在我們使用這些列印函式除錯我們的程式之前,我們需要實現串列埠列印功能。在wince的bsp中,如果想呼叫debug...