关于python 多进程异步打印相同值的问题

我使用该程序,创建了3个进程的线程池,但是打印结果出现了,队列容量重复的问题:

图片说明
这个该怎么解决
代码如下:

from multiprocessing import Pool, Manager, cpu_count
import time


num_list = []

for i in range(10):
    num_list.append(i)

start_time = time.time()
def crawler(q, index):
    Process_id = "Process"+ str(index)
    while not q.empty():
        time.sleep(1)
        num = q.get(timeout=1)
        print(Process_id, num, q.qsize())


if __name__ == '__main__':
    manager = Manager()
    num_queue = manager.Queue(150000)

    # 填充队列
    for num in num_list:
        num_queue.put(num)

    lock = manager.Lock()
    # 创建线程池为10个
    pool = Pool(processes=3)
    # 创建的任务数量
    for i in range(3):
        pool.apply_async(func=crawler, args=(num_queue, i))

    print("Started procesess")
    pool.close()
    pool.join()

    print("Main Process end")
    end_time = time.time()
    print("时间为"+str(end_time-start_time))
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问