一般来说,共有两种数据共享方式:
- 多线程
- 共享内存
Python的多线程不适用于受CPU约束的任务(由于GIL),因此在这种情况下,通常的解决方案是继续
multiprocessing。但是,使用此解决方案,您需要使用
multiprocessing.Value和显式共享数据
multiprocessing.Array。
注意,由于所有同步问题,通常在进程之间共享数据可能不是最佳选择。通常,涉及参与者交换消息的方法是更好的选择。另请参阅Python文档:
如上所述,在进行并行编程时,通常最好尽可能避免使用共享状态。使用多个进程时尤其如此。
但是,如果确实需要使用某些共享数据,则多处理提供了两种方法。
在您的情况下,您需要包装
l1,
l2并
l3以某种可以理解的方式
multiprocessing(例如通过使用
multiprocessing.Array)进行包装,然后将它们作为参数传递。
还要注意,正如您所说的那样,您不需要写访问权限,那么您应该
lock=False在创建对象时通过,否则所有访问仍将被序列化。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)