Chcę użyć metody wieloprocesowej. Aby użyć zmiennej w wielu procesach, ale składnia nie jest jasna w dokumentacji Pythona. Czy ktoś może mi powiedzieć, co powinienem użyć jako typu (moja zmienna to litera) i gdzie umieścić nazwę mojej zmiennej?multiplerocessing.value jasna składnia?
EDIT
Próbowałem za pomocą Menedżera dzielić mój list między procesami. Ale jedyne, co teraz mam, to Value('ctypes.c_char_p', '
(klucz, który tu trafiłeś) ')
wydrukowany w powłoce Pythona i wciąż nie ma dźwięku. Konsola wydaje się również nieco wolniejsza niż zwykle podczas korzystania z menedżera. Między momentem, w którym uderzyłem w klawisz, a chwilą, gdy na ekranie pojawi się Value
, występuje prawie jedna sekundowa zwłoka.
Mój kod wygląda teraz tak:
#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()
Jestem zdezorientowany przez sekcję twojego kodu, którą nazwałeś "inicjalizacją". Wyrażenie 'global' na najwyższym poziomie modułu nic nie robi. To zupełnie bez znaczenia. Co masz zamiar na "event" i "hitkey"? – Blckknght
To jest stare stwierdzenie, którego zapomniałem usunąć. Nie sądzę, żeby to zmieniło cokolwiek. – Pollux
Czy naprawdę potrzebujesz tutaj przetwarzania wieloprocesowego? Na pewno nie potrzebujesz 'Menedżera' lub' wartości' tylko po to, aby przekazać argument do nowego procesu (po prostu pozwól, aby 'multiprocessing' przekazał ciąg znaków za pomocą' pickle').Czy twoja funkcja 'player' działa, jeśli po prostu nazywasz ją zwykłym kodem, a nie oddzielnym procesem? W ogóle nie znam 'winsound', więc nie mogę pomóc zbyt wiele w debugowaniu go. – Blckknght