我的代码: 在repl.it IDE中运行它
skip = 3
但是每次我运行它,o / p每次都会变得不同,为什么呢?
1 -
from multiprocessing import Queue
colors = ['red', 'green', 'blue', 'black']
cnt = 1
# instantiating a queue object
queue = Queue()
print('pushing items to queue:')
for color in colors:
print('item no: ', cnt, ' ', color)
queue.put(color)
cnt += 1
print('\npopping items from queue:')
cnt = 1
while not queue.empty():
print('item no: ', cnt, ' ', queue.get())
cnt += 1
2-这次它没有显示get o / p
pushing items to queue:
item no: 1 red
item no: 2 green
item no: 3 blue
item no: 4 black
popping items from queue:
item no: 1 red
item no: 2 green
item no: 3 blue
item no: 4 black
3-这次只有2 o / p的get()部分
pushing items to queue:
item no: 1 red
item no: 2 green
item no: 3 blue
item no: 4 black
popping items from queue:
为什么会发生这种情况!这与我不知道的一些隐藏的多处理内容有关吗?
提前致谢。
答案 0 :(得分:0)
multiprocessing.Queue
是使用线程实现的。这意味着每次项目put
时,线程需要选择,在某些情况下(例如您的脚本),主线程更快,而不是所有物品都被拿走了。
如果您稍微延迟(time.sleep(0.5 # for example
。),您会看到它再次正常运作。