根据有关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)
如果我正确理解,您正在启动两个单独的过程,并希望在过程之间共享全局变量。
这根本无法使用。没有它们之间的某种明确的通信机制,这两个过程将无法共享数据。