Python3 - 不更新的多处理变量

时间:2018-04-30 10:20:46

标签: python python-3.x multiprocessing

我创建了从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()

0 个答案:

没有答案