zoukankan      html  css  js  c++  java
  • TypeError: can't pickle _thread.lock objects

    TypeError: can't pickle _thread.lock objects  分布式进程学习 中出现的错误

      QueueManager.register('get_task_queue', callable=get_task())  原因是这里的callable的参数赋值方法加了()  去掉就行了 
    # coding:utf-8
    # WINDOWS
    import queue
    from multiprocessing.managers import BaseManager
    from multiprocessing import freeze_support
    # 任务个数
    task_number = 10
    # 定义收发队列
    task_queue = queue.Queue(task_number)
    result_queue = queue.Queue(task_number)
    
    
    # 创建类似的queuemanager
    class QueueManager(BaseManager):
        pass
    
    
    def get_task():
        global task_queue
        return task_queue
    
    
    def get_result():
        global result_queue
        return result_queue
    
    
    def win_run():
        # 先定义函数在绑定
        QueueManager.register('get_task_queue', callable=get_task())
        QueueManager.register('get_result_queue', callable=get_result())
        manager = QueueManager(address=('127.0.0.1', 8001), authkey=b'qiye')
    
        # QueueManager.register('get_task_queue', callable=return_task_queue)
        # QueueManager.register('get_result_queue', callable=return_result_queue)
        # manager = QueueManager(address=('127.0.0.1', 8001), authkey=b'qiye')
        # 启动
        manager.start()
        # 通过网络获取任务队列和结果队列
        task = manager.get_task_queue()
        result = manager.get_result_queue()
        try:
    
            # 添加任务
            for url in ['ImgUrl_'+str(i) for i in range(10)]:
                print('put task %s...' % url)
                task.put(url)
            print('try to get result')
            for i in range(10):
                print('result is %s' % result.get(timeout=10))
        except queue.Empty:
            print('result is empty')
        finally:
            #关闭
            manager.shutdown()
    
    
    if __name__ == '__main__':
        # windows多进程可能有问题 加以下代码缓解
        freeze_support()
        win_run()
    

      

    你不能把坏习惯扔出窗外 但你可以一步步赶下电梯
  • 相关阅读:
    charles安装以及手机端的设置
    ON DUPLICATE KEY UPDATE 用法与说明
    亿级流量架构之网关设计思路、常见网关对比
    灰度发布系统架构设计
    Jmeter 并发测试
    springboot --- Swagger UI初识
    TortoiseGIT 一直提示输入密码的解决方法!
    MySQL 5.6 参数详解
    LVS 轮询调度详解
    MongoDB 权限
  • 原文地址:https://www.cnblogs.com/Ychao/p/9186265.html
Copyright © 2011-2022 走看看