我创建了从net获取文件的脚本,但我想在获取过程中添加一些动画。我为此使用multiprocessing
,因为fetch脚本会暂停程序,直到下载文件为止。
在req()
函数中,我将放置一些获取我的url的代码,它运行良好,但下载文件时动画不会停止。
在anim()
中有一些动画脚本,它应该在每个符号更改时间检查s
变量,如果s = False
动画需要停止。 但在anim()
中,s
总是True
,它不会更新,s = False
req()中的赋值会被忽略!
如何更新s
中的anim()
?
import time
import requests
import sys
import multiprocessing
animation = "|/-\\"
s = True
def req(): # Here I'll write some other code, but 's' variable will be False
global s
time.sleep(3)
s = False
def anim():
i=0
global s
while s == True:
time.sleep(0.1)
sys.stdout.write("\r" + animation[i % len(animation)])
sys.stdout.flush()
i+=1
p1 = multiprocessing.Process(name='p1', target=anim)
p = multiprocessing.Process(name='p', target=req)
p1.start()
p.start()
P.S。您应该从终端运行此代码段,因为它使用flush()