1
GLOBAL_VAR = 1
class Worker:
class_var = 2
工人的實例由多個進程創建。他們是否擁有自己的上述變量副本?如果沒有,我可以使用它們安全地鎖定對多個類實例訪問的資源的訪問權限(當然,以線程安全的方式創建和訪問它們)?我想爲一個班級用戶透明地做到這一點。什麼是正確的方法來做到這一點?python中的進程共享什麼變量?
GLOBAL_VAR = 1
class Worker:
class_var = 2
工人的實例由多個進程創建。他們是否擁有自己的上述變量副本?如果沒有,我可以使用它們安全地鎖定對多個類實例訪問的資源的訪問權限(當然,以線程安全的方式創建和訪問它們)?我想爲一個班級用戶透明地做到這一點。什麼是正確的方法來做到這一點?python中的進程共享什麼變量?
你說的是多線程還是多處理?這些在Python中非常不同。
線程可以像在Python中一樣使用變量,不受限制。另一方面,進程不能訪問另一個進程的變量(不包括共享變量的一些例外)。進程將在創建時複製局部變量的當前狀態,但它只是一個副本。
多處理。有沒有一種方式來共享數據而不會注意到父進程? – VladimirLenin
你能否清楚暴露你想要達到的目標?在進程之間進行通信有多種方式,但實際上取決於應用程序 – CoMartel
有N個工作程序實例在其自己的進程中運行。父進程使用不會將任何鎖/引用傳遞給子工的接口。我不想更改界面,因爲還有其他童工種類不同於Worker,共享相同的界面,不需要這些鎖定/數據。每個工作人員最終訪問資源(「姓名」)。如果一名工作人員在「名稱」上工作,其他嘗試這樣做的人可以跳過此操作。因此,維護工作人員共享的工作名稱列表就足夠了(我想,有一個用於列表更新的互斥體)。 – VladimirLenin