我正在使用一个解压缩应用程序,并且我想使用多个进程从目录中解压缩许多文件,并且我希望有一个屏幕了解每个进程及其解压缩的内容。 我真的是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()