我不太清楚你的意思。您是否想要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中的其他語句。 –
這是可能的,但不使用導入系統。導入必須等到該過程完成(在模塊範圍內將永遠掛起該無限循環)。您必須將其寫出到數據庫或文件並從那裏加載。 –