擅长:python、mysql、java
<p>用Python3<a href="https://docs.python.org/3/library/concurrent.futures.html" rel="nofollow noreferrer">ThreadPoolExecutor</a>可能的解决方案</p>
<pre><code> from concurrent.futures import ThreadPoolExecutor
import queue
import pandas as pd
def load_data_worker(data_queue, file_name):
data_queue.put(pd.read_csv(file_name))
class DataManager(object):
def __init__(self):
self.data_queue = queue.Queue()
self.data_arr = []
def load_data(self):
with ThreadPoolExecutor() as executor:
executor.submit(load_data_woker, self.data_queue, 'a.csv')
executor.submit(load_data_woker, self.data_queue, 'b.csv')
# ...
executor.submit(load_data_woker, self.data_queue, 'f.csv')
# dumping Queue of loaded data to array
self.data_arr = list(self.data_queue.queue)
if __name__ == '__main__':
dm = DataManager()
dm.load_data()
# Main thread is waiting for load_data to finish.
print("finished loading data")
</code></pre>