擅长:python、mysql、java
<p>多处理库的工作原理是先对对象进行酸洗,然后将数据管道传输到其他派生进程。问题是你的<code>special_class</code>无法修补。在</p>
<blockquote>
<p>If I create the instances inside the function run_task it will work fine</p>
</blockquote>
<p>这样做是因为这样就不需要对对象进行pickle,这就解决了这个问题。在</p>
<hr/>
<p>您需要使您的<code>special_class</code>可选取。这可以通过各种方式实现。它们都记录在这里:<a href="https://docs.python.org/3/library/pickle.html#pickle-inst" rel="nofollow noreferrer">https://docs.python.org/3/library/pickle.html#pickle-inst</a></p>
<p>基本上有三种机制:</p>
<ul>
<li>使用定制泡菜器</li>
<li>在<code>special_class</code>上实现<code>__reduce__</code>方法</li>
<li>在<code>special_class</code>上实现<code>__getstate__</code>和<code>__setstate__</code>方法(如果类实例有状态)</li>
</ul>
<p>我有一种感觉,你在你的<code>special_class</code>中引用了一个外部对象。在这种情况下,请参考:<a href="https://docs.python.org/3/library/pickle.html#persistence-of-external-objects" rel="nofollow noreferrer">https://docs.python.org/3/library/pickle.html#persistence-of-external-objects</a></p>