多线程-为每个线程编写一个文件Python3



我有一个Python 3脚本,它有以下代码:

from subprocess import check_output, Popen, CalledProcessError
from os import getenv, mkdir, path
from time import sleep, time
from threading import Thread
def pgrep(proc_name):
try:
check_output(["pgrep", proc_name])
return True
except CalledProcessError:
return False
def watch_dog(proc_name, polling_rate, CONFIG_DIR):
print("Thread " + proc_name + " Started")
start_time = 0
end_time = 0
total_time = 0
while True:
if (pgrep(proc_name) and (start_time == 0)):
start_time = time()
print("TIMING " + proc_name)
elif ((not pgrep(proc_name)) and (start_time != 0)):
end_time = time()
total_time = str(end_time - start_time)
print("Done timing " + proc_name)
print("TIME: " + total_time)
try:
with open(CONFIG_DIR + proc_name + "-time.log", "w+") as log_file:
log_file.write(total_time)
log_file.write("n")
log_file.flush()
except:
print("CANNOT WRITE TO FILE")
start_time = 0
end_time = 0
total_time = 0
sleep(polling_rate)
for each in processes:
globals()[each] = Thread(target=watch_dog, args=(each, polling_rate, CONFIG_DIR,))
globals()[each].start()

除了我不能从watch_dog函数写入任何文件之外,一切都很完美。我做了一些研究,大多数事情都指向需要一个单独的线程来写入其他人想要写入的文件。然而,我发现的所有这些例子都是专门针对多个线程写入一个文件的。I、 但是,每个线程需要一个文件。

有没有办法绕过这个问题,或者我必须有一个线程来写入每个单独的文件?

发现了我的问题所在。在线:

with open(CONFIG_DIR + proc_name + "-time.log", "w+") as log_file:

CONFIG_DIR没有以正斜杠("/"(结尾,因此文件正在创建中,只是在父目录中,并且使用了我意想不到的名称。这是一个简单的解决方案:

with open(CONFIG_DIR + "/" + proc_name + "-time.log", "w+") as log_file:

这个故事的寓意是:检查你的文件路径。

相关内容

最新更新