dfjkdjfle
小小不离鞘
2021-01-14 11:42
采纳率: 100%
浏览 139

python 创建多进程时 args参数传递self.xxxx报错

问题图片

process = multiprocessing.Process(target=self.sever_client, args=(client, recv_data, addr))   
是我原来的代码,运行时创建多进程也没有问题

logger

self.logger是我在__init__中创建的一个类属性

 

self.sever_client(client, recv_data, addr, self.logger)

是我改了代码之后,运行多进程会报错,但是直接运行这个函数,代码运行正常没有问题

 

process = multiprocessing.Process(target=self.sever_client, args=(client, recv_data, addr, self.logger))  
就是我改了代码之后,创建这个函数的多进程,但是会报错

报错信息

个人觉得问题出现在self.logger  是因为创建多进程时  将self.logger传入导致的问题

请各位大佬指教(抱拳)

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • m0_47670683
    皛心 2021-01-15 18:17
    已采纳

    我没看到你的全部代码,不过可以估计得出报错的原因。

    请记住多进程之间数据隔离,我想可能是你没注意到数据隔离的原因,访问了访问不到的属性。

    另外多任务编程,记住IO多计算少应该用多线程编程,计算多IO少才用多进程编程。

    可以关注我,看看我近期写的python编程之操作系统知识点梳理。

    我觉得你需要好好梳理一下多进程、多线程、协程编程的相关概念。然后再尝试自己改代码。

    点赞 1 评论

相关推荐