第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 Python 的 multiprocessing.Queue 不阻塞

為什么 Python 的 multiprocessing.Queue 不阻塞

Go
紅顏莎娜 2023-05-22 15:55:51
我是 Python 的新手,但我想編寫一個用作multiprocessing.QueueGo 通道的多進(jìn)程程序。但是,似乎并multiprocessing.Queue.put(, block=True)沒有像記錄的那樣阻止。這是我的 Python 示例程序:import multiprocessingimport selectimport timedef f(q):    while True:        time.sleep(1)        print("Put")        q.put("hello world")if __name__ == "__main__":    q = multiprocessing.Queue(maxsize=0)    f(q)我希望它只會打印一個“Put”并永遠(yuǎn)阻塞。但是,我得到的是它反復(fù)打印“Put”。這是我認(rèn)為幾乎等效的 Go 程序,只是 goroutine 是一個綠色線程而不是進(jìn)程。package mainimport (    "fmt"    "time")func main() {    ch := make(chan int)    for {        time.Sleep(time.Second)        fmt.Println("Put")        ch <- 1    }}當(dāng)我鍵入 時go run csp.go,它只打印一個“Put”,Go 運行時提示程序處于死鎖狀態(tài)。為什么multiprocessing.Queue.put()不阻止?
查看完整描述

1 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗 獲得超2個贊

隊列長度為 1,它會根據(jù)需要阻塞


   Python 2.7.12 (default, Nov 12 2018, 14:36:49) 

    [GCC 5.4.0 20160609] on linux2

    Type "help", "copyright", "credits" or "license" for more information.

    >>> import multiprocessing

    >>> import select

    >>> import time

    >>> 

    >>> q = multiprocessing.Queue(maxsize=1)

    >>> q.put(9)

    >>> q.put(10)  // blocking here, have to ctrl-c to escape

    ^CTraceback (most recent call last):

      File "<stdin>", line 1, in <module>

      File "/usr/lib/python2.7/multiprocessing/queues.py", line 101, in put

        if not self._sem.acquire(block, timeout):

    KeyboardInterrupt

    >>> 


查看完整回答
反對 回復(fù) 2023-05-22
  • 1 回答
  • 0 關(guān)注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號