有一个主文件和一堆辅助模块,其中的代码应该实时执行,同时我们设法使用线程Thread和循环来实现这一点While true,(我是初学者,不要'不要扔石头),但是当线程数达到6同时执行时,处理器及其所有内核开始达到100%,如果有人对循环模块的并行执行有更有效的解决方案,我将非常感激
下面是一个带有启动模块逻辑的主文件示例,只有这里它们同时启动(模拟启动),只有 2 个模块,我启动 6 个模块
# -*- coding: utf-8 -*-
from threading import Thread
import keyboard
import time
class main:
def __init__(self):
self.start = False
self.stop = False
self.exit = False
def module_one(self):
while True:
if self.start == True:
self.stop = False
while True:
if self.stop == True:
self.start = False
break
time.sleep(1)
print('Start module one')
if self.exit == True:
break
def module_two(self):
while True:
if self.start == True:
self.stop = False
time.sleep(1)
while True:
if self.stop == True:
self.start = False
time.sleep(1)
break
time.sleep(1)
print('Start module two')
if self.exit == True:
break
def run_programm(self):
while True:
if keyboard.is_pressed('9'):
print('Start programm')
self.start = True
while True:
if keyboard.is_pressed('0'):
print('Stop programm')
self.stop = True
break
if keyboard.is_pressed('8'):
self.exit = True
break
if __name__ == "__main__":
object_main = main()
RUN_CYCLES = Thread(target = object_main.run_programm)
RUN_CYCLES.start()
MODULE_ONE_CYCLE = Thread(target = object_main.module_one)
MODULE_TWO_CYCLE = Thread(target = object_main.module_two)
MODULE_ONE_CYCLE.start()
MODULE_TWO_CYCLE.start()
MODULE_ONE_CYCLE.join()
MODULE_TWO_CYCLE.join()
RUN_CYCLES.join()
ps 需要用python 2写程序,我用python 2.7写的
使用基于threading.Event的逻辑,而不是 self.start、self.stop、self.exit,while True 和 time.sleep
self.start = threading.Event()if self.start.is_set():while not self.stop.is_set():self.start.wait()等等