我即將開始使用Python進行輪詢的程序,它將不斷從串口讀取(通過PySerial
)並從文件描述符中讀取,該文件描述符將從時間更改爲時間。我開始研究threading
模塊,但隨後我一直髮現more和more建議使用multiprocessing
模塊來代替。線程與Python中的進程
我不太熟悉Python,主要來自C背景。 Python中的線程方法的技術優勢是什麼?
在C中,線程共享數據,而不得不建立一些IPC進行通信,這對Python來說似乎是相同的?
我用例:
Main process (or thread?) -
start & initialize
|
V
spaw child----------------------> start & initialize
| |
V V
while (1) <------------+ wait for data<------+
| | | |
V | V |
read file descriptors | read from |
| | serial port<-----+ |
V | | | |
value changed? ------No--+ V | |
| ^ message done?--No-+ |
V | | |
Report change------------+ V |
over serial alert parent---------+
所以我就在想線程,因爲它將使共享數據拿到過串行些,他們可以有一個共同的句柄串行端口。這是否有意義,還是我從Pythonic的角度來錯誤地思考這個問題?
多處理是一種(稍顯笨重的恕我直言)迴避GIL的方式。在這種情況下,我認爲「線程化」是要走的路。 – mgilson
@Downvoter - 我可以有一個原因,你爲什麼覺得這個問題:「不顯示研究工作,它不清楚或沒有用」? – Mike