我正在尝试同步读取包含存储在列表中的N个.csv文件的列表。
现在我执行以下操作:
导入多进程
流程2 def B()
def read_all_lead_files(folder):
for files in glob.glob(folder+"*.csv"):
file_list.append(files)
def read_even():
file_list[::2]
def read_odd():
file_list[1::2]
p1 = Process(target=read_even)
p1.start()
p2 = Process(target=read_odd)
p2.start()
是否有更快的方法将列表分区拆分为Process函数?
答案 0 :(得分:5)
我在这里按你的要求猜测,因为最初的问题还不清楚。由于os.listdir
并不保证订购,因此我假设你的" 2"函数实际上是相同的,您只需要同时对多个文件执行相同的过程。
根据我的经验,最简单的方法是启动Pool
,为每个文件启动一个进程,然后等待。 e.g。
import multiprocessing
def process(file):
pass # do stuff to a file
p = multiprocessing.Pool()
for f in glob.glob(folder+"*.csv"):
# launch a process for each file (ish).
# The result will be approximately one process per CPU core available.
p.apply_async(process, [f])
p.close()
p.join() # Wait for all child processes to close.