簡體   English   中英

在python中暫停一個線程

[英]Pause one thread from other in python

我一直在尋找如何在python中執行多線程(2個線程)。

我希望其中之一正在不斷讀取串行端口。 讀取每幀並將其保存到數據庫。 我已經做了一個腳本來做到這一點。

對於第二個,我希望它監聽一個套接字端口。 當它從該端口接收到某些內容時,我希望它暫停第一個線程,將一些內容寫入串行端口並寫入套接字。 之后,取消暫停第一個線程,然后返回以監聽套接字端口。

我認為最好的主意是在那一刻暫停另一個線程讀取串行端口,因為如果我在第一個線程中通過串行端口讀取答案,則必須將值讀給第二個線程,這更復雜了,是不是嗎

我已經在串行端口上進行了編寫,並查看了一些有關套接字部分的教程,因此我對此沒有任何問題。 但是我沒有找到任何關於暫停另一個線程的信息,我認為這是不可能的。

在這種情況下我該怎么辦?

編輯:詢問共享變量:所以我可以聲明一個全局變量,使像:

global1
global2
Thread 1:

while(global1 == 0)
    do whatever
global2 = 1

thread 2:
    wait socket
    if dataReceived: global1 = 1
    if global2 = 1 do whatever on serial port
    global2 = 0
    when finish global1 = 0

使用2個全局變量,我可以通知線程1停止繼續進行下一次迭代,而使用global2,第二個線程知道何時不使用串行端口...

如何在python中聲明共享變量? 還是只是另一個變量...

我不確定您是否可以在進程之間直接共享對象,但是由於每個進程都可以與主進程共享對象,因此可以使用主進程來回傳遞它們:

http://docs.python.org/2/library/multiprocessing.html#exchanging-objects-between-processes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM