import multiprocessing as mp
def p1(q):
print("p1 start")
print(q.get())
print("p1 end")
if __name__ == "__main__":
q = mp.Queue()
q.close()
mp.Process(target=p1, args=(q,)).start()
print("closed")
输出,然后就卡在 q.get()
了:
closed
p1 start
但是如果在主进程 q.get()
就会正常的报错:
import multiprocessing as mp
def p1(q):
print("p1 start")
print(q.get())
print("p1 end")
if __name__ == "__main__":
q = mp.Queue()
q.close()
q.get() # <-- 在主进程 get()
mp.Process(target=p1, args=(q,)).start()
print("closed")
Traceback (most recent call last):
File "/home/username/test.py", line 11, in <module>
q.get()
File "/usr/lib64/python3.12/multiprocessing/queues.py", line 100, in get
raise ValueError(f"Queue {self!r} is closed")
ValueError: Queue <multiprocessing.queues.Queue object at 0x7f55c519ba40> is closed
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.