我的脚本必须运行一天,其核心周期每分钟运行 2-3 次。我使用多处理同时发出命令,每个命令都将在一个周期内终止/加入。
但实际上我发现该软件最终会退出交换内存或计算机冻结的情况,我想这是由累积的进程引起的。我可以在运行程序时在另一个会话中看到,python PID随着时间的推移异常增加。所以我只是假设这一定是过程的事情。我不明白的是它是如何发生的,尽管我确保每个周期的过程必须在该周期上完成,然后再进行下一个周期。
所以我猜测,实际计算需要更多时间来推进"终止()/join()"作业,所以我不应该"重用"相同的对象名称。这是正确的猜测还是有其他可能性?
def function(a,b):
try:
#do stuff # audio / serial things
except:
return
flag_for_2nd_cycle=0
for i in range (1500): # main for running long time
#do something
if flag_for_2nd_cycle==1:
while my_process.is_alive():
if (timecondition) < 30: # kill process if it still alive
my_process.terminate()
my_process.join()
flag_for_2nd_cycle=1
my_process=multiprocessing.process(target=function, args=[c,d])
my_process.start()
#do something and other process jobs going on, for example
my_process2 = multiprocessing.process() ##*stuff
my_process2.terminate()
my_process2.join()
根据您的评论,您正在通过串行端口控制三台投影仪。
最简单的方法是简单地打开三个串行连接(使用pySerial
)。然后运行一个循环,在其中检查每个连接的可用数据,如果是,则读取并处理它。然后依次向每台投影仪发送命令。 根据串行链路的速度,您可能不需要超过此速度。