Python 在线程中使用WMI无法正常工作
因此,我一直在尝试为我的学校项目构建一个进程监视器,在尝试使用WMI来监视写入字节和读取字节的修改时,我遇到了一个问题,我尝试了这种方法,当它自己工作时,当我尝试以以下方式将其放入循环时,它无法正常工作(它有一些问题)Python 在线程中使用WMI无法正常工作,python,python-3.x,wmi,python-multithreading,Python,Python 3.x,Wmi,Python Multithreading,因此,我一直在尝试为我的学校项目构建一个进程监视器,在尝试使用WMI来监视写入字节和读取字节的修改时,我遇到了一个问题,我尝试了这种方法,当它自己工作时,当我尝试以以下方式将其放入循环时,它无法正常工作(它有一些问题) import sys sys.coinit_flags = 0 import wmi import pythoncom import time import threading def watch_for_modification(): global GLOBAL_
import sys
sys.coinit_flags = 0
import wmi
import pythoncom
import time
import threading
def watch_for_modification():
global GLOBAL_START_FLAG
print("started")
pythoncom.CoInitializeEx(sys.coinit_flags)
try:
con = wmi.WMI()
process_watcher = con.Win32_Process.watch_for("modification")
print("created watcher")
while GLOBAL_START_FLAG:
print("8")
try:
new_process = process_watcher()
prev_proc = new_process.previous
pid = new_process.Processid
name = new_process.Caption
write_bytes = new_process.WriteOperationCount
read_bytes = new_process.ReadOperationCount
prev_write_bytes = prev_proc.WriteOperationCount
prev_read_bytes = prev_proc.ReadOperationCount
if prev_read_bytes != read_bytes or prev_write_bytes != write_bytes:
process_to_append = {
'pid': pid,
'name': name,
'write_bytes': write_bytes,
'read_bytes': read_bytes,
'update_epoch_time': time.time()
}
print("Modification occurred at", new_process.timestamp)
print(new_process.path())
print(process_to_append)
#Update_list_sem.acquire()
#UPDATE_PROCESSES.append(process_to_append)
#Update_list_sem.release()
except wmi.x_wmi_timed_out:
print(wmi.x_wmi_timed_out)
pass
finally:
pythoncom.CoUninitialize()
t5 = threading.Thread(target=watch_for_modification, daemon=True)
t5.start()
while True:
pass