簡體   English   中英

進程如何在python中獲取全局變量的當前值?

[英]How can a process get the current value of a global variable in python?

我的代碼是這樣的:

import pygame
from multiprocessing import Process, Queue

#dosomething
#dosomething

def keyboard():
    keys_pressed = q.get()
    if key_pressed[pygame.K_a]:
        #dosomething

q = Queue()
keyboard_process = Process(target=keyboard)
keyboard_process.start()
while True:
    q.put(pygame.key.get_pressed())
    #dosomething
    keyboard_process.join()
    #dosomething

但是,即使我按下“A”,“q”的值也總是 [0, 0, ……, 0]。“keyboard_process.join()”總是什么都不做。所以游戲不起作用。

進程如何在python中獲取全局變量的當前值? 請幫我。

最簡潔的答案是不”。

當您啟動一個單獨的子進程時,它會獲得父進程內存空間的完整副本。 一旦啟動,它就完全獨立於父級。 通信父/子的唯一方法是使用某種進程間通信機制——管道、共享內存、網絡套接字、文件等。

但是,如果您啟動一個單獨的處理線程,則所有線程共享相同的內存。

在@humble_D 的答案被刪除之前,它有一個很好的鏈接到一個相關的答案,詳細說明了一些進程間通信的方法。 參考: 多處理:在進程之間共享一個大的只讀對象?

老實說,如果您認真考慮將 PyGame 用於新游戲,它可能不需要多處理。 如果需要發生一些超級 CPU 綁定的子進程,您可能最好用本地二進制編譯語言(例如: C/C++/Rust )編寫這部分並將其作為子進程啟動。

但首先,只需編寫您的游戲,然后優化緩慢的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM