1つは、問題が見つかりました。
複数のスレッドを使用してドキュメントを処理する場合、コンソールにデータを印刷する場合、タスクは並行して実行され
、同時に実行されることがわかりました。ただし、同じテキストをtxtテキストに書き込む場合、テキストのコンテンツはで実行されます。シングルスレッド。
1.以下はコードです
#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.コンソールにスクリーンショットを印刷します
3.txtテキストのスクリーンショット
第二に、問題の原因
- この問題は、printステートメントの実行後、印刷されたデータが直接出力されるために発生します。
- ファイルを書き込む文が実行された後、データはコンピュータのメモリに保存されます。タスクが実行された後、メモリ内のデータはファイルに保存され、ファイルは正常に保存されるように閉じられます。
- したがって、テキストに保存されたデータは並列ではありません
三、解決策
- 各メソッドのファイル書き込みステートメントが実行されると、すぐに保存操作が実行されるため、どのメソッドが呼び出されても、データはすぐに保存されます。
第四に、解決効果
- 上記の方法で解いた後、ファイル内のデータも並列になります