我不太清楚你的意思。您是否想要file1运行,并且无限期地每2秒递增一次“x”的值,并且在任何时候运行file2时,都会从运行“file1”的程序/ python实例中提取当前值“x” ?
如果是这样,这不是你将如何处理它。使用file2,您将从file1中提取set变量x = 0。你需要做的是具有某种形式的IPC(进程间通信),以便file2可以从file1访问“x”的值。你可以通过多种方式做到这一点,包括共享内存,Redis或Memcached之类的键/值存储程序,数据库等。
如果你想通过redis或memcached来做,只需运行redis,使用Python的redis库,并且每2秒调用一次密钥“x”的.incr方法。然后,当您运行file2时,调用.get方法获得键“x”,您将获得当前值。当file1运行时,它将继续增加x;当它不是时,它不会并且将有效地冻结。但是,redis会将内存中最后一个已知值保留为“x”键。
要做到这一点与数据库,你可以实现一个MySQL数据库/表,并每2秒增加一个表中的键列中的“x”的值。你必须看看Python的mySQL库。
要做到这一点与共享内存,看看Python的共享内存功能。
还有很多其他的方式来共享数据。您可以简单地通过打开它,写入新值,刷新并关闭它,每2秒将“x”的值写入文件。然后简单地让file2读取该文件。当然,这样你就会遇到竞争条件问题,它在更新文件之前读取文件并获得一个陈旧值,这些都取决于该文件在那个时候从该进程写入该文件的优先级。
除非您明确创建多个线程或进程,否则Python程序将只有一个执行线程。在你的例子中,解释器将开始执行file2并进入import语句。现在执行将移至file1,导入'time'模块并打开while循环。这是一个无限循环,所以它不会完成,并且不会再有file2中的其他语句。 –
这是可能的,但不使用导入系统。导入必须等到该过程完成(在模块范围内将永远挂起该无限循环)。您必须将其写出到数据库或文件并从那里加载。 –