• 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()
    

      

    你不能把坏习惯扔出窗外 但你可以一步步赶下电梯
  • 相关阅读:
    第72天: PySpider框架的使用
    第71天: Python Scrapy 项目实战
    Web前端资源汇总
    1201即将到来
    C#自定义事件模拟风吹草摇摆
    HTML5 Canvas爱心时钟代码
    CSS3圆环动态弹出菜单
    CSS3实现Loading动画特效
    HTML5优势
    CSS3扁平化Loading动画特效
  • 原文地址:https://www.cnblogs.com/Ychao/p/9186265.html
Copyright © 2020-2023  润新知