我制作了一个鼠标跟踪脚本(就像一个挑战,没什么特别的),它每秒更新几次,但一个很大的缺陷就是每当它保存时,即使它在不同的线程中,整个脚本暂停,因为所有的酸洗使用cpu。
我决定尝试使用多处理来解决这个问题,就像将这些数据复制到一个单独的进程中然后在那里做任何事情一样。我的设置是我正常调用该线程,但随后会调用该进程,并且该进程将通过Queue
将其状态反馈给线程(然后将打印出来)。
我一直打的问题是,每当我在保存期间移动鼠标时,它都会抱怨字典大小会发生变化。我发现这实际上是因为它在将数据发送到新流程之前对其进行了腌制,并且酸洗不喜欢尺寸变化。我尝试了deepcopy
并且也不喜欢大小的变化,所以我编写了自己的代码来手动复制它,如果大小没有改变就无所谓了,但它的速度非常慢,和我的100mb文件一样,5分钟后没有显示任何完成的迹象。
我应该如何解决这个问题?基本上,给定一个包含其他字典的大型字典以及每秒更新多次的内容,如何在合理的时间内将其腌制,以便在不影响主要过程的情况下进行保存?