【发布时间】:2021-05-12 04:32:59
【问题描述】:
我想在技术上使用 python 中的多线程将数据附加到同一个文本文件中
这是我的代码_
import threading
my_list = ["a", "b", "c", "d", "e", "f"]
def f1():
for item in my_list:
file = open("order_log.txt", "a")
file.write(f"It is f1 {item}")
file.close()
def f2():
for item in my_list:
file = open("order_log.txt", "a")
file.write(f"It is f2 {item}")
file.close()
def f3():
for item in my_list:
file = open("order_log.txt", "a")
file.write(f"It is f3 {item}")
file.close()
def f4():
for item in my_list:
file = open("order_log.txt", "a")
file.write(f"It is f4 {item}")
file.close()
t1 = threading.Thread(target=f1)
t2 = threading.Thread(target=f2)
t3 = threading.Thread(target=f3)
t4 = threading.Thread(target=f4)
t1.start()
t2.start()
t3.start()
t4.start()
t1.join()
t2.join()
t3.join()
t4.join()
但是当我执行程序时,它并没有写任何东西,谁能告诉我该怎么做。
【问题讨论】:
-
嗨,Christy,多线程处理单个资源(被另一个线程锁定的文件)有什么好处?
-
试图同时从多个线程写入单个文件会使文件内容变得无法使用。如果您更改代码以便每个线程写入不同的文件(例如“order_log_1.txt”、“order_log_2.txt”等),OTOH,这将正常工作。
-
没有 Jeremy 但我必须写在同一个文件中
-
Shawn 我听不懂你想告诉我什么...
-
如果你必须写入同一个文件,那么你需要在所有线程之间共享一个文件句柄(而不是让每个线程打开自己单独的文件句柄),然后你'将需要使用互斥锁来保护该文件句柄的所有使用以避免竞争条件。这将序列化对文件的访问,以便一次只有一个线程可以写入。
标签: python multithreading python-multithreading writing