风澜舞 2020-02-06 17:13 采纳率: 0%
浏览 165

关于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))
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器