与管道相比,Multiprocessing(.Manager).Queue有问题吗?

时间:2018-08-03 09:05:28

标签: python list numpy multiprocessing tuples

已编辑

我正在Windows 7 64中为高性能计算作业(使用matplotlibjupyter实现一些动态绘图(使用multiprocessing.Pool.starmap_asyncnumpy和chrome)一点。我使用大小为4的工作程序Pool计算要绘制的数据,并将主要过程作为绘制过程。

我在此模型中发现,将5-list / 5-tuple(即list / tuple和1 int和4 {{ {} {1}}中的1}}常常导致仅将部分结果放入float中。似乎消费者进程因为试图从multiprocessing.Manager.Queue获取而死了,而里面没有任何东西,并且所有python进程的CPU百分比均为0。

我用Google搜索,发现是否需要将一个Queue传递给多个进程,我应该使用Queue而不是Queue,否则会出现异常。但是,即使我使用multiprocessing.Manager.Queue,我的python也不会给出multiprocessing.Queue(尽管在线运行示例确实会抛出Exception)。

我尝试将multiprocessing.Queue / Exception仅包含一个元素,但突然之间效果很好。我尝试减少每个list的计算时间,尽管有时它仍然不起作用,但卡在中间的可能性却大大降低了。我终于用tuple取代了map,一切正常。

multiprocessing.Manager.Queue相比,multiprocessing.Pipemultiprocessing.Queue有问题吗?还是在编写相关代码时需要注意什么?

0 个答案:

没有答案