python-使用多重处理保存多个matplotlib图形
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-使用多重处理保存多个matplotlib图形,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1407字,纯文字阅读大概需要3分钟。
内容图文
![python-使用多重处理保存多个matplotlib图形](/upload/InfoBanner/zyjiaocheng/660/27a2a5ae8ff94243bda1d541012e156f.jpg)
我有一个代码可以从多个名为001.txt,002.txt,…,411.txt的文件中读取数据.我想从每个文件中读取数据,对其进行绘制,然后另存为001.jpg,002.jpg,…,411.jpg.
我可以通过遍历文件来完成此操作,但是我想使用多进程模块来加快处理速度.
但是,当我使用下面的代码时,计算机挂起-我无法单击任何东西,但是鼠标移动了,声音仍在继续.然后,我必须关闭计算机电源.
我显然是在用matplotlib滥用多进程模块.我使用了与下面的代码非常相似的东西来实际生成数据,并毫无问题地保存到文本文件中.我想念什么?
import multiprocessing
def do_plot(number):
fig = figure(number)
a, b = random.sample(range(1,9999),1000), random.sample(range(1,9999),1000)
# generate random data
scatter(a, b)
savefig("%03d" % (number,) + ".jpg")
print "Done ", number
close()
for i in (0, 1, 2, 3):
jobs = []
# for j in chunk:
p = multiprocessing.Process(target = do_plot, args = (i,))
jobs.append(p)
p.start()
p.join()
解决方法:
使用多重处理的最重要的事情是只对主进程运行模块的主代码.这可以通过测试__name__ ==’__main__’来实现,如下所示:
import matplotlib.pyplot as plt
import numpy.random as random
from multiprocessing import Pool
def do_plot(number):
fig = plt.figure(number)
a = random.sample(1000)
b = random.sample(1000)
# generate random data
plt.scatter(a, b)
plt.savefig("%03d.jpg" % (number,))
plt.close()
print("Done ", number)
if __name__ == '__main__':
pool = Pool()
pool.map(do_plot, range(4))
还要注意,我用进程池代替了单独进程的创建(进程池可更好地缩放到许多图片,因为它只使用与可用内核一样多的进程).
内容总结
以上是互联网集市为您收集整理的python-使用多重处理保存多个matplotlib图形全部内容,希望文章能够帮你解决python-使用多重处理保存多个matplotlib图形所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。