问题标签 [python-multiprocessing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
11523 浏览

python - Python多处理:优雅地杀死一个进程

优雅地杀死进程列表?

如果不是,最简单的方法是什么?

目标是将配置文件重新加载到内存中,所以我想杀死所有子进程并创建其他子进程,后者将读取新的配置文件。

编辑:添加了更多代码来解释我正在运行一个while True循环

编辑:这是@dano建议后的新代码

代码的好处是我可以编辑配置文件,并且该过程也将重新加载其配置。

问题是只有第一个进程运行而其他进程被忽略。

编辑:这救了我的命,在 schedule() 中使用 while True 不是一个好主意,所以我refresh_time改为设置

0 投票
2 回答
1139 浏览

python - pandas 数据帧的多处理。基于输入大小的令人困惑的行为

我正在尝试实现类似 df.apply 的函数,但在数据帧的块中并行化。我编写了以下测试代码,看看我能获得多少(相对于数据复制等):

奇怪的行为:对于 N=10^7 它适用于 N=10^8 它给了我一个错误

有谁知道这里发生了什么?对于这种并行化方式的任何反馈,我也将不胜感激。我期望函数花费的时间比每行和数百万行的 inc 或 sum 更多。

谢谢!

0 投票
1 回答
1823 浏览

python - 为什么台球多处理模块需要“if __name__=='__main__'”行?

如果我有以下代码:

脚本按预期运行,打印“ok!” 和结束。但是,如果我省略该if __name__=='__main__':行并取消缩进以下行,我的机器(OS X)就会发疯,不断产生大量 Python 进程,直到 I killall Python. 知道这里发生了什么吗?

(对于那些将其标记为重复的人,请注意,虽然另一个问题 if __name__=='__main__'一般是问目的,但我特意问的是为什么未能在此处使用它会导致出乎意料的行为)

0 投票
1 回答
12611 浏览

python - Python 无法使用 multiprocessing.pool 分配内存

我的代码(遗传优化算法的一部分)并行运行几个进程,等待所有进程完成,读取输出,然后使用不同的输入重复。当我重复 60 次测试时,一切正常。由于它有效,我决定使用更实际的重复次数 200。我收到此错误:

这是我使用池的代码片段:

RunOne 函数在我创建的类中创建一个对象,使用计算量大的 python 包来解决一个大约需要 30 秒的化学问题,并返回带有化学求解器输出的对象。

因此,我的代码串行调用 RunMany,然后 RunMany 并行调用 RunOne。在我的测试中,我使用 10 个处理器(计算机有 16 个)和一个包含 20 个对 RunOne 的调用的池调用了 RunOne。换句话说,len(arg1)*len(arg2)*len(arg3)=20。当我的代码调用 RunMany 60 次时一切正常,但是当我调用它 200 次时内存不足。

这是否意味着某些进程本身没有正确清理?我有内存泄漏吗?如何确定我是否有内存泄漏,以及如何找出泄漏的原因?在我的 200 次重复循环中唯一增长的项目是一个从 0 大小增长到 200 长度的数字列表。我有一个来自我构建的自定义类的对象字典,但它的上限是长度50 个条目 - 每次循环执行时,它都会从字典中删除一个项目并用另一个项目替换它。

编辑:这是调用 RunMany 的代码片段

0 投票
1 回答
2076 浏览

python - 使用多处理模块的脚本不会终止

以下代码不打印"here"。问题是什么?我在我的两台机器(Windows 7、Ubuntu 12.10)和 http://www.compileonline.com/execute_python_online.php上都对其进行了测试, 它并非"here"在所有情况下都打印出来。

0 投票
1 回答
1207 浏览

python - 多处理/多线程 - 不会提高速度 - Python

我是多处理/多线程模块的新手,我正在尝试检查它是否可以提高程序的速度。问题是它返回了意外的值。我也尝试过,threading.Threadmultiprocessing.Process发生了同样的问题 - 它比不使用另一个线程运行得慢。

在这个例子中,我使用了多处理模块,但是当我尝试多线程时它几乎是一样的(不同之处在注释中)这是打印两个函数顺序运行的时间和这些函数并行运行的时间的代码:

你能告诉我是否有可能提高这个例子的速度吗?我做错了什么?

我有一个想法:是不是因为分成更多的进程或线程需要几秒钟,所以在必须在一秒钟内返回结果的情况下它无济于事?

0 投票
2 回答
1965 浏览

python - 多处理队列 - 为什么内存消耗会增加?

以下脚本生成 100 个大小为 100000 的随机字典,将每个 (key, value) 元组馈送到队列中,同时一个单独的进程从队列中读取:

我期望内存使用量保持不变,因为消费者进程在主进程提供数据时从队列中提取数据。我验证了数据不会在队列中累积。

但是,我监控了内存消耗,并且随着脚本的运行它不断增加。如果我替换imap_unorderedfor _ in xrange(100): d = get_random_dict(),那么内存消耗是恒定的。解释是什么?

0 投票
1 回答
2398 浏览

python - 类 ForkAwareLocal(threading.local): AttributeError: 'module' 对象没有属性 'local

我是python新手。我正在尝试手册中的这个代码片段,但我收到了这个错误。无法弄清楚为什么。任何帮助将不胜感激。谢谢

阿比

代码片段


错误


操作系统等 [root@localhost mpls-perf]# uname -a Linux localhost.localdomain 3.4.4464bit-smp-xp1.1-allpatch #1 SMP Wed Oct 15 17:34:02 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost mpls-perf]# python -V Python 2.7.5 [root@localhost mpls-perf]

0 投票
1 回答
364 浏览

python - 如果任何一个出现异常,如何退出所有加入的进程 - Python

我有一个 python 进程池,如果任何一个进程发生异常,我想退出池的执行

我已加入池中的所有进程,因此加入等待每个进程完成。如果我在目标函数中提出 sys.exit(1) ,系统会无限等待,因为连接仍在等待进程完成。

如何在代码中使用 join 时退出执行

0 投票
1 回答
1725 浏览

python - 通过多处理对生成器输出应用 reduce

我有一个像这样工作的生成器函数(Python)

我想要做的是添加这个生成器的输出。这条线完成了这项工作:

我想将其并行化以加快计算速度。重要的是,Mygenerator 的输出在生成时会减少,因为list(Mygenerator(...))会占用太多内存。