Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python线程隔离代码_Python_Multithreading_Python 3.x - Fatal编程技术网

用Python线程隔离代码

用Python线程隔离代码,python,multithreading,python-3.x,Python,Multithreading,Python 3.x,我正在编写一个程序,希望在其中异步计算一段代码。我希望它与主线程隔离,这样它就可以引发错误,进入无限循环,或者在不中断主程序的情况下执行任何其他操作。我希望使用线程。线程,但这有一个大问题;我想不出怎么阻止它。我试过线程。_stop(),但经常不起作用。我最终得到了一个我无法控制的线程,它占用了解释器时间和CPU资源。线程中的代码不会打开任何文件,也不会执行任何其他可能导致问题的操作(如果我硬终止了它) Python的multiprocessing.Process.terminate()很好地做

我正在编写一个程序,希望在其中异步计算一段代码。我希望它与主线程隔离,这样它就可以引发错误,进入无限循环,或者在不中断主程序的情况下执行任何其他操作。我希望使用线程。线程,但这有一个大问题;我想不出怎么阻止它。我试过线程。_stop(),但经常不起作用。我最终得到了一个我无法控制的线程,它占用了解释器时间和CPU资源。线程中的代码不会打开任何文件,也不会执行任何其他可能导致问题的操作(如果我硬终止了它)

Python的multiprocessing.Process.terminate()很好地做到了这一点;不幸的是,在Windows上启动一个进程需要将近一秒钟的时间,这足以在我的GUI中造成恼人的延迟

有人知道a:如何杀死Python线程(我不在乎出口有多脏)或b:如何加速启动进程吗


第三种可能是第三方库,它为异步执行提供了一种替代方法,但我从未听说过这样的事情。

在我的例子中,最好的方法似乎是维护一个正在运行的辅助进程,并根据需要将代码发送给它。如果进程出现问题,我会将其关闭,然后立即启动一个新进程,以避免下次出现任何延迟。

我不确定这是否可行。看看这个:你能在启动时创建一个工人
进程
,以避免按需创建进程的延迟吗?@eryksun:好主意。根据文档,Pool确实有一个terminate方法,这很重要。但是,它是否有方法启动新流程来替换终止的流程,或者我必须手动执行此操作?考虑一下这个问题吧!