Python 'progress' 模块在函数中不显示来自 os.fork() 的微调器



我想使用进度模块,但是,微调器似乎在函数内的os.fork((中不起作用。例如:

import sys, time, signal, os
from progress.spinner import MoonSpinner

def spinner_func():
spinner = MoonSpinner('this is a test')
pid = os.fork()
if pid == 0:
while True:
time.sleep(0.1)
spinner.next()
exit()
# Some long-running, blocking action would normally go here
time.sleep(20)
os.kill(pid, signal.SIGTERM)
spinner.finish()
print('Done!!')

相同的代码在函数外部工作,因为它显示微调器直到执行结束。我不确定如何在函数中使用此模块,有什么想法吗?

'spinner' 变量必须在子进程内部分配,并且可以通过多处理将其发送到父进程。队列((

例如:

import sys, time, signal, os, multiprocessing
from progress.spinner import MoonSpinner

def spinner_func():
q = multiprocessing.Queue()
pid = os.fork()
if pid == 0:
spinner = MoonSpinner('this is a test') # <<--notify
q.put(spinner)
while True:
time.sleep(0.1)
spinner.next()
exit()
time.sleep(20)
os.kill(pid, signal.SIGTERM)
spinner = q.get()
spinner.finish()
print('Done!!')
spinner_func()

最新更新