Python中文
首页
教程
问答
标签
搜索
登录
注册
把大号的子弹放在多处理.Queu
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>当尝试将一个大的<code>ndarray</code>放入<code>Process</code>中的<code>Queue</code>时,我遇到了以下问题:</p> <p>首先,代码如下:</p> <pre><code>import numpy import multiprocessing from ctypes import c_bool import time def run(acquisition_running, data_queue): while acquisition_running.value: length = 65536 data = numpy.ndarray(length, dtype='float') data_queue.put(data) time.sleep(0.1) if __name__ == '__main__': acquisition_running = multiprocessing.Value(c_bool) data_queue = multiprocessing.Queue() process = multiprocessing.Process( target=run, args=(acquisition_running, data_queue)) acquisition_running.value = True process.start() time.sleep(1) acquisition_running.value = False process.join() print('Finished') number_items = 0 while not data_queue.empty(): data_item = data_queue.get() number_items += 1 print(number_items) </code></pre> <ol> <li><p>如果我使用<code>length=10</code>左右,一切正常。我有9件东西通过队列传送。</p></li> <li><p>如果我增加到<code>length=1000</code>,在我的计算机上<code>process.join()</code>块,尽管<code>run()</code>函数已经完成。我可以用<code>process.join()</code>注释这行,然后会看到,队列中只有2个项目,所以很明显,将数据放入队列的速度非常慢。</p></li> </ol> <p>我的计划是运输4个月,每个长度65536。对于<code>Thread</code>来说,这非常快(<;1ms)。有没有办法提高进程的数据传输速度?在</p> <p>我在Windows机器上使用了python3.4,但是在Linux上使用python3.4,我得到了相同的行为。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>要解决这个问题,您可以做的一件事是在每个进程之间卸载队列,这与JPG提供的优秀答案一致。在</p> <p>所以改为这样做:</p> <pre><code>process.start() data_item = data_queue.get() process.join() </code></pre> <p>虽然这并不能完全复制代码中的行为(数据计数的数量),但您应该明白了;)</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我是否正确构建了这个递归神经网络
10 回答
我是否正确理解acquire和realease是如何在python库“线程化”中工作的
7 回答
我是否正确理解Keras中的批次大小?
6 回答
我是否正确理解PyTorch的加法和乘法?
8 回答
我是否正确组织了我的Django应用程序?
5 回答
我是否正确计算执行时间?如果是这样,那么并行处理将花费更长的时间。这看起来很奇怪
5 回答
我是否每次创建新项目时都必须在PyCharm中安装numpy?(安装而不是导入)
4 回答
我是否每次运行jupyter笔记本时都必须重新启动内核?
10 回答
我是否用python安装了socks模块?
6 回答
我是否真的需要知道超过一种语言,如果我想要制作网页应用程序?
4 回答
我是否缺少spaCy柠檬化中的预处理功能?
7 回答
我是否缺少给定状态下操作的检查?
5 回答
我是否能够使用函数“count()”来查找密码中大写字母的数量((Python)
4 回答
我是否能够使用用户输入作为colorama模块中的颜色?
7 回答
我是否能够创建一个能够添加新Django.contrib.auth公司没有登录到管理面板的用户?
7 回答
我是否能够将来自多个不同网站的数据合并到一个csv文件中?
3 回答
我是否能够将目录路径转换为可以输入python hdf5数据表的内容?
1 回答
我是否能够等到一个对象被销毁,直到它创建另一个对象,然后在循环中运行time.sleep()
4 回答
我是否能够通过CBV创建用户实例,而不是首先创建表单?(Django)
3 回答
我是否要使它成为递归函数?
2 回答