多进程读取文件
Multiprocess reading from file
我正在尝试从 2 个文件中多核读取数据,但是执行此代码后 list1
和 list2
为空。
from multiprocessing import Process
def getfile(fn, out):
print("start reading file {}".format(fn))
with open(fn) as file:
for line in file:
out.append(line)
if __name__ == '__main__':
file1 = []
file2 = []
p1 = Process(target=getfile, args=("100.txt", file1))
p2 = Process(target=getfile, args=("98.txt", file2))
p1.start()
p2.start()
p1.join()
p2.join()
print(file1)
print(file2)
如何使用多处理将文件中的写入数据写入列表或可迭代的内容?
使用多个进程时,使用 Queues
或 Pipes
在您的父进程和您派生的进程之间交换数据。
管道直观地允许您在父进程和子进程之间传递数据。
队列允许您的子进程在队列上存储一些数据,从而允许您的父进程检索它。
在您的情况下,队列最有意义,因为您的父进程似乎不需要在其生成后将任何数据传递给子进程。
这是一个文件的示例:
from multiprocessing import Process, Queue
def getfile(fn, out):
with open(fn) as file:
for line in file:
out.put(line)
if __name__ == '__main__':
file1 = Queue()
p1 = Process(target=getfile, args=("100.txt", file1))
p1.start()
file1.get() //returns lines of the file
p1.join()
您可以将同一个队列传递给两个进程,请注意消息的顺序可能会在两个文件之间混合,以防您试图分开每个文件的内容。
我正在尝试从 2 个文件中多核读取数据,但是执行此代码后 list1
和 list2
为空。
from multiprocessing import Process
def getfile(fn, out):
print("start reading file {}".format(fn))
with open(fn) as file:
for line in file:
out.append(line)
if __name__ == '__main__':
file1 = []
file2 = []
p1 = Process(target=getfile, args=("100.txt", file1))
p2 = Process(target=getfile, args=("98.txt", file2))
p1.start()
p2.start()
p1.join()
p2.join()
print(file1)
print(file2)
如何使用多处理将文件中的写入数据写入列表或可迭代的内容?
使用多个进程时,使用 Queues
或 Pipes
在您的父进程和您派生的进程之间交换数据。
管道直观地允许您在父进程和子进程之间传递数据。
队列允许您的子进程在队列上存储一些数据,从而允许您的父进程检索它。
在您的情况下,队列最有意义,因为您的父进程似乎不需要在其生成后将任何数据传递给子进程。
这是一个文件的示例:
from multiprocessing import Process, Queue
def getfile(fn, out):
with open(fn) as file:
for line in file:
out.put(line)
if __name__ == '__main__':
file1 = Queue()
p1 = Process(target=getfile, args=("100.txt", file1))
p1.start()
file1.get() //returns lines of the file
p1.join()
您可以将同一个队列传递给两个进程,请注意消息的顺序可能会在两个文件之间混合,以防您试图分开每个文件的内容。