我正在处理Python多处理,我想了解是否有可能节省时间。
我有3个txt文件,应该由Python读取。因此,我定义了一个打开txt文件并逐行读取的函数。此功能所需的输入只是txt文件的名称:
import multiprocessing as mp
output=mp.Queue()
def funct_imp(name):
[...]
output.put([var1,var2,var3])
return (var1,var2,var3)
然后我比较了第一个脚本:
res01=funct_imp(name01)
res02=funct_imp(name02)
res03=funct_imp(name03)
在第二个示例中,我使用Python多处理:
for name in [name01,name02,name03]:
pool=mp.Process(target=func_imp,args=name)
pool.start()
res=output.get()
现在我有两个主要问题:
res
中发现了与res03
相同的结果答案 0 :(得分:0)
import multiprocessing as mp
def read_file(name):
lines = []
with open(name) as fp:
lines = fp.readlines()
return lines
if __name__ == '__main__':
names = ['file1.txt', 'file2.txt'] # list of filenames
pool = mp.Pool()
results = pool.map(read_file, names)
这会将所有行读入内存,将pool.imap
用于更懒的版本,并在read_file
中产生行。
results
将是行列表。
答案 1 :(得分:0)
尝试使用多处理池:
from multiprocessing import Pool
def f(x):
-- process the file here --
if __name__ == '__main__':
p = Pool()
print(p.map(f, [name01, name02, name03]))