Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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_Subprocess_Gevent - Fatal编程技术网

Python:在后台运行进程并能够杀死它们

Python:在后台运行进程并能够杀死它们,python,subprocess,gevent,Python,Subprocess,Gevent,我需要不断加载一些数据源。加载数据源可能需要20-30秒。通过每小时检查一次MySQL数据库,我知道要加载哪些提要 我可以同时加载多达20个提要。很重要的一点是,没有一个提要会相互阻塞,因为我需要不断刷新它们 当我不再需要加载提要时,我正在读取的数据库会被更新,因此我需要停止加载提要,这是我希望从主程序执行的操作,因此我不需要与数据库的多个连接 我知道我可能可以使用线程、子进程或gevents来实现这一点。我想问一下这些是否是最好的 谢谢这取决于您的应用程序逻辑。如果您只是将数据输入数据库,而没

我需要不断加载一些数据源。加载数据源可能需要20-30秒。通过每小时检查一次MySQL数据库,我知道要加载哪些提要

我可以同时加载多达20个提要。很重要的一点是,没有一个提要会相互阻塞,因为我需要不断刷新它们

当我不再需要加载提要时,我正在读取的数据库会被更新,因此我需要停止加载提要,这是我希望从主程序执行的操作,因此我不需要与数据库的多个连接

我知道我可能可以使用线程、子进程或gevents来实现这一点。我想问一下这些是否是最好的


谢谢

这取决于您的应用程序逻辑。如果您只是将数据输入数据库,而没有任何CPU密集型任务,那么大部分应用程序时间将花在IO上,线程就足够了。如果你正在做一些CPU密集型的suff,那么你应该使用多处理模块,这样你就可以使用所有的CPU内核,因为GIL线程不允许你使用

使用subprocess只需添加一个额外的任务来实现已经在多处理模块中实现的相同内容,因此我将跳过这一点(为什么要重新发明轮子)。gevents只是一个事件循环,我不认为这比使用线程更好。但是如果我错了,请纠正我,我从来没有用过gevent