所以我只是想多處理並閱讀文本文檔中的每一行。有660918行,我知道所有這些都是相同的長度。雖然用下面的代碼,線條的長度似乎改變了,但我不明白爲什麼。多處理問題
import multiprocessing
class Worker(multiprocessing.Process):
def __init__(self,in_q):
multiprocessing.Process.__init__(self)
self.in_q = in_q
def run(self):
while True:
try:
in_q.get()
temp_line = short_file.readline()
temp_line = temp_line.strip().split()
print len(temp_line)
self.in_q.task_done()
except:
break
if __name__ == "__main__":
num_proc = 10
lines = 100000 #660918 is how many lines there actually are
in_q = multiprocessing.JoinableQueue()
File = 'HGDP_FinalReport_Forward.txt'
short_file = open(File)
for i in range(lines):
in_q.put(i)
for i in range(num_proc):
worker = Worker(in_q)
worker.start()
in_q.join()
爲什麼不讀取主進程中的行,並將它們用'multiprocessing.Pool'處理到子進程? – robert
那麼上面並沒有真正回答我的問題,除非由於某種原因,彙集會使所有行讀取相同的長度。 – user1423020
@ user1423020:令人驚訝的是,它實際上會使行讀取相同的長度。 – abarnert