我已经查看了一些解决问题的其他线程,但并未完全理解。
假设我有一个包含共享变量的配置文件:
flag = False
import config
while(1):
config.flag = True
print config.flag
import config
while(1):
config.flag = False
print config.flag
如果现在我运行Test1.py
和Test2.py
,我是否可以看到输出中'True'
'False'
之间的切换?我不关心此时的同步,只要它可以访问共享变量,那就完成了。
感谢。
答案 0 :(得分:4)
没有。只要您在不同的进程中运行这两个实例,内存就不会被神奇地共享。
您正在启动两个不同的(Python)流程。这些进程导入配置模块。简化,这只是在config.py中加载代码的一种形式。这些流程之间没有进一步的沟通。
(作为旁注,config.py中的代码仅在第一次解释时,它被编译并保存在单独的config.pyc中,加载速度更快。下次编辑config.py时,config.pyc将被重新创造)。
还有其他选择:
线程示例:
flag = False
import thread
import time
import config
def test1():
while 1:
config.flag = True
time.sleep(0.7)
print 'test1:', config.flag
time.sleep(1)
def test2():
while 1:
config.flag = False
time.sleep(1.1)
print 'test2:', config.flag
time.sleep(1)
thread.start_new(test1, ())
test2()
发布您尝试执行此操作的原因可能会有所帮助。多线程是一个难题。这个问题可能有用:https://stackoverflow.com/questions/4690518/multithreading-in-python
答案 1 :(得分:1)