Я работаю в приложении для разархивирования, и я хочу использовать несколько процессов, чтобы разархивировать несколько файлов из каталога, и я хочу иметь экран, чтобы знать о каждом процессе и о том, что это такое, я действительноновичок в программировании на Python, и я также новичок в многопроцессорности
Когда я составляю этот скрипт, я хочу видеть состояние каждого процесса, но вместо этого файлы просто распаковываются, и на экран ничего не выводится,пока сценарий не разархивируется и не закончится.Может кто-нибудь объяснить, почему на экране нет отпечатков?
import os, zipfile
from multiprocessing import Process
from unicurses import*
import time
dir_name = 'E:\zips'
extension = ".zip"
processes = 3
os.chdir(dir_name)
def unzipper(item,files,poz,no_proc):
if(item.endswith(extension)):
move(no_proc*2,5)
addstr(f"#{no_proc} -> working on {item}...\n")
getch()
file_name = os.path.abspath(item)
zip_ref = zipfile.ZipFile(file_name)
zip_ref.extractall(dir_name)
zip_ref.close()
move(no_proc*2,5)
addstr(f"#{no_proc} finised processing {item}.\n")
if(poz-processes>=0):
item=files.pop(poz-processes)
unzipper(item, files,poz-processes,no_proc)
else:
os.kill(os.getpid())
if __name__ == '__main__':
stdscr=initscr()
print(os.getpid())
procs = []
i=0
list = os.listdir(dir_name)
files=[]
for i in range(0,len(list)):
if(list[i].endswith(extension)):
files.append(list[i])
for no_proc in range(0,processes):
move((no_proc+1)*2,5)
addstr(f"#{no_proc} -> ")
for no_proc in range(0,processes):
if(files!=[]):
item=files.pop()
proc = Process(target=unzipper, args=(item,files,len(files),no_proc+1))
procs.append(proc)
proc.start()
for proc in procs:
proc.join()