相关疑难解决方法(0)

在Python中使用多处理时应该如何记录?

现在我在框架中有一个中央模块,它使用Python 2.6 multiprocessing模块生成多个进程.因为它使用multiprocessing,所以有模块级多处理感知日志,LOG = multiprocessing.get_logger().根据文档,这个记录器具有进程共享锁,因此您不会sys.stderr通过让多个进程同时写入来解决问题(或任何文件句柄).

我现在遇到的问题是框架中的其他模块不支持多处理.我看到它的方式,我需要使这个中央模块的所有依赖使用多处理感知日志记录.这框架很烦人,更不用说框架的所有客户了.我有没有想到的替代方案?

python logging multiprocessing

213
推荐指数
11
解决办法
11万
查看次数

multiprocessing.pool.imap是否有一个允许多个参数的变体(如starmap)?

我正在对大量字节进行一些计算.该进程在大块字节上运行.我试图使用多处理并行处理来提高性能.最初我尝试使用pool.map,但只允许单个参数,然后我找到了pool.starmap.但是pool.starmap仅在所有进程完成后才给出结果.我想要结果(有点).我正在尝试使用pool.imap,它在进程完成时提供结果,但不允许多个参数(我的函数需要2个参数).而且,结果的顺序很重要.

下面的一些示例代码:

pool = mp.Pool(processes=4)
y = []
for x in pool.starmap(f, zip(da, repeat(db))):
    y.append(x)
Run Code Online (Sandbox Code Playgroud)

上面的代码有效,但只在完成所有进程后才给出结果.我看不到任何进展.这就是为什么我尝试使用pool.imap,效果很好但只有一个参数:

pool = mp.Pool(processes=4)
y = []
for x in pool.imap(f, da)):
    y.append(x)
Run Code Online (Sandbox Code Playgroud)

在多个参数上引发以下异常:

TypeError: f() missing 1 required positional argument: 'd'
Run Code Online (Sandbox Code Playgroud)

寻找实现所有3个要求的简单方法:

  1. 使用多个参数/参数进行并行处理
  2. 设法在流程运行时查看进度
  3. 有序的结果.

谢谢!

python windows python-multiprocessing

8
推荐指数
2
解决办法
3159
查看次数

使用线程/多进程读取多个文件

我目前正在从 FileNameList 的路径列表中提取 .txt 文件,该文件正在运行。但我的主要问题是,文件太多时速度太慢。

我正在使用此代码打印 txt 文件列表,

import os
import sys

#FileNameList is my set of files from my path
for filefolder in FileNameList: 
  for file in os.listdir(filefolder): 
    if "txt" in file:
        filename = filefolder + "\\" + file     
        print filename
Run Code Online (Sandbox Code Playgroud)

任何有关线程/多进程并使其快速阅读的帮助或建议都将被接受。提前致谢。

python multithreading multiprocessing

7
推荐指数
2
解决办法
6533
查看次数