使用python多处理仅显示一次警告

时间:2018-11-08 11:11:17

标签: python python-3.x warnings python-multiprocessing

使用Python的multiprocessing.Pool时,是否只能显示一次警告?

说明问题的简单示例

import multiprocessing
import warnings


def func_with_warning(data):
    warnings.warn("Warning message {}".format(data))

if __name__ == '__main__':
    data = [0, 1, 2]
    pool = multiprocessing.Pool(2)
    pool.map(func_with_warning, data)

结果:

>> /home/user/script.py:10: UserWarning: Warning message 0
warnings.warn("Warning message {}".format(data))
/home/user/script.py:10: UserWarning: Warning message 1
warnings.warn("Warning message {}".format(data))
/home/user/script.py:10: UserWarning: Warning message 2
warnings.warn("Warning message {}".format(data))
>>

我知道每个产生的进程就像一个独立的Python世界,但是也许有人知道在这种情况下仅显示一次警告的任何技巧吗?

有人建议它与问题重复:Python 3: Catching warnings during multiprocessing。我认为:

  • 相似但不相同。
  • 可能有
  • 解决方案,但不必回答我的问题,
  • 它更加详细,重点关注对象实例化期间捕获警告的范围更窄的问题

0 个答案:

没有答案