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传入导致的问题

请各位大佬指教(抱拳)

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

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

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

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

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