Tôi muốn sử dụng multiprocessing.Value để sử dụng một biến trong nhiều quy trình, nhưng cú pháp không rõ ràng trên tài liệu của Python. Bất cứ ai có thể cho tôi biết những gì tôi nên sử dụng như là loại (biến của tôi là một lá thư), và nơi để đặt tên biến của tôi?multiprocessing.value rõ ràng cú pháp?
EDIT
Tôi đã cố gắng sử dụng Trình quản lý để chia sẻ thư giữa các quy trình. Nhưng điều duy nhất tôi có bây giờ là Value('ctypes.c_char_p', '
(Phím bạn nhấn ở đây) ')
được in trong vỏ Python và vẫn không có âm thanh. Bảng điều khiển cũng có vẻ chậm hơn một chút so với bình thường khi sử dụng trình quản lý. Có một sự chậm trễ gần một giây giữa thời gian tôi nhấn phím và khi Value
xuất hiện trên màn hình.
Mã của tôi bây giờ trông như thế này:
#Import
from tkinter import *
import wave
import winsound
import multiprocessing
#Functions
def key(event):
temp = event.char
manager = multiprocessing.Manager()
manager.Value(ctypes.c_char_p, temp)
hitkey = manager.Value(ctypes.c_char_p, temp)
instance = multiprocessing.Process(target=player, args=(hitkey,))
instance.start()
def player(hitkey):
print(hitkey + "1")
winsound.PlaySound(hitkey + '.wav', winsound.SND_FILENAME|winsound.SND_NOWAIT|winsound.SND_ASYNC)
if __name__ == "__main__":
#Initialisation
fenetre = Tk()
frame = Frame(fenetre, width=200, height=100)
#TK
frame.focus_set()
frame.bind("<Key>", key)
frame.pack()
fenetre.mainloop()
Tôi bị nhầm lẫn bởi phần mã bạn đã gắn nhãn 'initialization'. Câu lệnh 'global' ở cấp cao nhất của mô-đun không làm gì cả. Nó hoàn toàn vô nghĩa. Bạn có ý định gì cho 'event' và' hitkey' ở đó? – Blckknght
Đây là một tuyên bố cũ mà tôi quên xóa. Tôi không nghĩ rằng nó sẽ thay đổi bất cứ điều gì. – Pollux
Bạn có thực sự cần đa xử lý ở đây không? Bạn chắc chắn không cần 'Manager' hoặc' value' chỉ để chuyển đối số cho một tiến trình mới (chỉ cần để 'multiprocessing' truyền chuỗi bằng' pickle').Chức năng 'player' của bạn có hoạt động không nếu bạn đơn giản gọi nó từ mã thông thường, chứ không phải trong một tiến trình riêng biệt? Tôi không biết 'thắng lợi' chút nào, vì vậy tôi không thể giúp quá nhiều trong việc gỡ lỗi nó. – Blckknght