我最近开始学习 Python 中的线程,特别是线程模块。
而且我需要这样做,以便在线程结束后(即,当我输入 nameThrd.is_alive() 时,它显示 False)我可以再次启动该线程。
我没有抛弃所有代码,因为程序本身有 200 个字符长,甚至使用 pyqt5。
我这样做(我确定它不正确):
def checkEvent():
global run
run = True
while run == True:
for x in range(0,5):
if (x == 5):
run = False
real_thrd()
def real_thrd () :
checkplay = threading.Thread(target=checkEvent)
checkplay.start()
#событие:
real_thrd()
###Код который нужно выполнить во время работы потока
#событие:
run = False
实施它如何正确?
蟒蛇 3.8.3
multiprocessing.dummy模块提供与多处理兼容的接口,但适用于线程,而不是进程。
池是一组通过作业队列连接到主代码的进程。
在一个线程上多次运行一个函数:
但是,您需要一种
imap()方法map_async()——如果没有代码描述,就很难说。这个接口对于执行非 qt 相关的代码非常方便。网络和文件和其他 I/O 的理想选择。对于数据数组的繁重处理,最好使用进程池。对于 Qt,也有原生QThread,因此,QThreadPool给它们
在主类中添加一个池
具有有用工作的函数应该包装在 QRunnable 类中
你可以运行多次。
带有示例的非常详细的文章https://www.learnpyqt.com/courses/concurrent-execution/multithreading-pyqt-applications-qthreadpool/
无需重新启动线程即可解决此任务。比如可以通过threading.Event在一个循环中组织一次重启
run()