Python脚本在dill.dump()上卡住了

Python脚本在dill.dump()上卡住了,python,multithreading,python-3.x,pickle,dill,Python,Multithreading,Python 3.x,Pickle,Dill,我正在使用Python3和discord.pyAPI包装器(使用asyncio)编写一个discord机器人。我正在运行一个Web服务器,在主线程中处理Atom提要通知,在第二个线程中处理discord客户端 我正在使用dill保存自定义类的词典。当bot接收到包含有效命令的聊天消息(字典中的某些内容发生了更改)时,discord客户端(线程2)将运行该函数 脚本似乎卡在了dill.dump()上: 功能 调用函数 我意识到,通过使用和块,我可以使代码看起来更好(并且可能工作更高效),这只是一个

我正在使用Python3和discord.pyAPI包装器(使用asyncio)编写一个discord机器人。我正在运行一个Web服务器,在主线程中处理Atom提要通知,在第二个线程中处理discord客户端

我正在使用dill保存自定义类的词典。当bot接收到包含有效命令的聊天消息(字典中的某些内容发生了更改)时,discord客户端(线程2)将运行该函数

脚本似乎卡在了dill.dump()上:

功能 调用函数 我意识到,通过使用
块,我可以使代码看起来更好(并且可能工作更高效),这只是一个测试构建(因此也是打印语句的负载)。运行此操作时收到的输出是:

Saving Streamers
Opened file.
***NOTHING ON THIS LINE***
我没有收到任何类型的错误消息,脚本只是在该行上停止输出,然后冻结

该文件在文件资源管理器中可见,但包含0字节

当我使用
CTRL+C
强制退出脚本时,文件最终保存


当我在python3解释器中手动运行this代码片段时,它工作正常(从同一工作目录,由于脚本是由root运行的,所以有读写权限)。

问题似乎是全局解释器锁。对我来说,解决方案是切换到多处理而不是线程

嗨!你能提供完整的代码设置吗?您可以尝试将您的
dill.dump
包装到
try/except
中以捕获错误
...
print('Saving Streamers')
save_object(Streamers, "streamers.dat")
print('Saving Youtubers')
save_object(Youtubers, "youtubers.dat")
Saving Streamers
Opened file.
***NOTHING ON THIS LINE***