我有 4 個執行緒從 4 個文本檔案中讀取并將其列印在螢屏上。我想制作額外的執行緒來撰寫并保存在新文本檔案中讀取的 4 個執行緒。 當前代碼:
import pandas as pd
import threading
from datetime import datetime
start_time = datetime.now()
def print_text(filename):
text = pd.read_csv(filename, delimiter = "\t")
print(text)
if __name__ == "__main__":
filenames = ['file1.txt', "file2.txt", "file3.txt", "file4.txt"]
# Create thread for each filename.
threads = [threading.Thread(target=print_text, args=(filename,)) for filename in filenames]
# Start execution of each thread.
for thread in threads:
thread.start()
# Join threads when execution is complete.
for thread in threads:
thread.join()
time_elapsed = datetime.now() - start_time
print('Time elapsed (hh:mm:ss.ms) {}'.format(time_elapsed))
uj5u.com熱心網友回復:
這顯示了如何使用佇列將四個“寫入器”執行緒的輸出路由到“讀取器”執行緒。精明的讀者會意識到為此創建第 5 個執行緒是沒有意義的。我們可以呼叫print_result主線代碼并以更低的開銷獲得相同的結果。
import queue
import threading
from datetime import datetime
start_time = datetime.now()
def print_text(q, filename):
for line in open(filename):
q.put(line.strip())
q.put('--end--')
def print_result(q, count=0):
while count:
line = q.get()
if line == '--end--':
count -= 1
else:
print(line)
if __name__ == "__main__":
filenames = ['file1.txt', "file2.txt", "file3.txt", "file4.txt"]
q = queue.Queue()
threads = [threading.Thread(target=print_text, args=(q, filename)) for filename in filenames]
threads.append( threading.Thread(target=print_result, args=(q, len(filenames))) )
# Start execution of each thread.
for thread in threads:
thread.start()
# Join threads when execution is complete.
for thread in threads:
thread.join()
time_elapsed = datetime.now() - start_time
print('Time elapsed (hh:mm:ss.ms) {}'.format(time_elapsed))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/403035.html
標籤:
