Es ist ein Memorandum.
2020/5/21 Beschreibung zu python3.8 hinzugefügt
sample.py
import os
def hoge(filename):
#Lesen Sie die Datei und verarbeiten Sie sie.
return data
data = [hoge(filename) for filename in os.listdir(".")]
Ich würde gerne so etwas machen, aber wenn ich diesen Code so drehe, wie er ist, wird nur ein Kern verwendet, also ist es Zeitverschwendung. Ich möchte es parallel machen.
sample.py
from multiprocessing import Pool
import os
def hoge(filename):
#Lesen Sie die Datei und verarbeiten Sie sie.
#Diese Funktion kann unverändert bleiben
return data
with Pool() as p:
data = p.map(hoge, os.listdir("."))
Arbeitet parallel zu.
sample.py
from tqdm import tqdm
from multiprocessing import Pool
import os
with Pool() as p:
imap = p.imap(hoge, os.listdir("."))
data = list(tqdm(imap, total=len(os.listdir("."))))
Es steckt aus irgendeinem Grund fest. Dies ist eine vorläufige Antwort,
sample.py
from multiprocessing import Pool
import os
def hoge(filename):
#Lesen Sie die Datei und verarbeiten Sie sie.
#Diese Funktion kann unverändert bleiben
return data
if __name__=="__main__":
with Pool() as p:
data = p.map(hoge, os.listdir("."))
Es scheint so zu funktionieren. Es scheint jedoch, dass die mit viel Aufwand erstellte Variable `data``` nur im Rahmen von`
if name __ == " main __" `` `referenziert werden kann.
Bisher war es auch möglich, auf Jupyter parallel zu laufen, in Python 3.8 ist dies jedoch nicht möglich.
Recommended Posts