Python:只能解析全局变量,但不能更新



根据有关Python中全局变量修改的许多其他帖子,我使用了全局关键字。但是,在find_new((中,我只能成功地从全球划分,但我无法将其价值更改为全球。代码中的打印结果永远不会具有相同的值。所有其他全球声明变量都发生了同样的事情。我试图每5秒钟在目录下监视文件更改,并将更改作为对全局的列表进行反映,以便我可以将其用于其他过程。有什么方法可以解决此问题?

我的代码:

from os import listdir
from os.path import isfile, join
from multiprocessing import Process
from threading import Thread 
import os
import time
def find_new():
    global result
    global new_in
    while(1):
        result_next = [os.path.join(dp, f) for dp, dn, filenames in os.walk(mypath) for f in filenames]
        new_in.extend([x for x in result_next if x not in result])
        result = result_next
        print result
        time.sleep(5)
....
if __name__== '__main__':
    #mypath = "/bj_truenas/bbr_rsync/us2bj"
    mypath = "/home/shiweizhou/proj0.1/Source"
    result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(mypath) for f in filenames]
    new_in=[]
    print "before concurrency"
    Process(target=find_new).start()
    Process(target=check_exist).start()
    print "after concurrency"
    while(1):
        print result
    time.sleep(5)

如果我正确理解,您正在启动两个单独的过程,并希望在过程之间共享全局变量。

这根本无法使用。没有它们之间的某种明确的通信机制,这两个过程将无法共享数据。

相关内容

  • 没有找到相关文章

最新更新