Les pièges de l'utilisation du multithreading pour traiter des documents

Premièrement, le problème est trouvé:

Lors de l'utilisation de plusieurs threads pour traiter des documents, j'ai constaté que lors de l'impression de données sur la console, les tâches sont exécutées en parallèle et exécutées en
même temps. Cependant, lors de l'écriture du même texte en texte txt, le contenu du texte est exécuté dans un seul fil.

1. Ci-dessous le code

#codint=utf-8

from multiprocessing import Process
import time

def run(Str,Num):
    m = 1
    with open("test.txt","a",encoding="utf-8") as FileObj:
        while True:
            FileObj.write("run(%s)方法正在运行,第 %d 次运行,n的值是 %d\n"%(Str,m,Num))
            print("run(%s)方法正在运行,第 %d 次运行,n的值是 %d\n"%(Str,m,Num))
            m += 1
            time.sleep(1)
            if m >= 10:
                break
if __name__ == '__main__':
    with open("test.txt", "a",encoding="utf-8") as FileObj:
        FileObj.write("主进程启动。。。\n")
        print("主进程启动。。。\n")
        # 创建子进程
        # target说明进程执行的任务
        n = 1
        PObj = Process(target=run,args=("nice",n))
        # 启动进程
        PObj.start()
        while True:
            FileObj.write("main()方法正在运行,第 %d 次运行\n"%n)
            print("main()方法正在运行,第 %d 次运行\n"%n)
            n += 1
            time.sleep(1)
            if n >= 10:
                break

2. Imprimez des captures d'écran sur la console

Insérez la description de l'image ici

3. capture d'écran de texte txt

Insérez la description de l'image ici

Deuxièmement, la cause du problème

  1. Ce problème se produit car, après l'exécution de l'instruction d'impression, les données imprimées sont sorties directement
  2. Une fois la phrase d'écriture du fichier exécutée, les données sont enregistrées dans la mémoire de l'ordinateur. Une fois la tâche exécutée, les données de la mémoire sont enregistrées dans le fichier et le fichier est fermé pour enregistrer les données avec succès.
  3. Par conséquent, les données enregistrées dans le texte ne sont pas parallèles

Trois, la solution

  1. Une fois que l'instruction d'écriture de fichier dans chaque méthode est exécutée, l'opération de sauvegarde est effectuée immédiatement, donc quelle méthode est appelée, les données seront enregistrées immédiatement

Quatrièmement, l'effet de solution

  1. Après la résolution selon la méthode ci-dessus, les données du fichier sont également parallèles
    Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/zhuan_long/article/details/112213977
conseillé
Classement