【发布时间】:2018-01-24 13:07:02
【问题描述】:
我的程序的目标是让两个复选框开始独立但并行的 while 循环。我考虑过线程,但 GIL 不应该阻止它工作吗?这些循环需要彼此完全独立。此外,用户界面锁定。循环中的.sleep 越长,锁定的时间就越长。我认为这可能是问题所在,因为如果他们同时更新top,它可能会阻止它工作,但是如果没有那些top.update,当我启动其中一个循环时,代码将完全停止工作。如何实现我正在寻找的并行性?
import multiprocessing
from multiprocessing import Process
GPIO.setmode(GPIO.BCM)
pinlist = [18, 23]
for i in pinlist:
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, GPIO.HIGH)
def CButtoncmd1():
while(ActivateVar1.get()):
GPIO.output(18, GPIO.LOW)
top.update()
time.sleep(.5);
GPIO.output(18, GPIO.HIGH)
top.update()
time.sleep(.5);
def CButtoncmd2():
while(ActivateVar2.get()):
GPIO.output(23, GPIO.LOW)
top.update()
time.sleep(.5);
GPIO.output(23, GPIO.HIGH)
top.update()
time.sleep(.5);
top = tkinter.Tk()
ActivateVar1 = DoubleVar()
CButtonActivate1 = CheckButton(top, text="start1", variable=ActivateVar1, command=CButtoncmd1)
CButtonActivate1.pack()
ActivateVar2 =DoubleVar()
CButtonActivate2 = CheckButton(top, text="start2", variable=ActivateVar2, command=CButtoncmd2)
CButtonActivate2.pack()
top.mainloop()
Light1 = multithreading.Process(target=CButtoncmd1, name="Light1")
Light2 = multithreading.Process(target=CButtoncmd1, name="Light2")
Light1.start()
Light2.start()
【问题讨论】:
标签: python multithreading parallel-processing python-multithreading