风澜舞 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 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
    • ¥20 matlab yalmip kkt 双层优化问题
    • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
    • ¥88 实在没有想法,需要个思路
    • ¥15 MATLAB报错输入参数太多
    • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
    • ¥15 有赏,i卡绘世画不出