【Python:为长时间运行的后台进程生成或线程?】教程文章相关的互联网学习教程文章

如何在python进程之间实时共享对象和数据?

我正在尝试为实时应用程序,多处理和大型文件在Python中找到一种合理的方法. 父进程产生2个或更多子进程.第一个孩子读取数据,保存在内存中,其他孩子以管道方式对其进行处理.数据应组织成一个对象,发送给以下过程,进行处理,发送,处理等. 由于开销(序列化等),可用的方法(如Pipe,Queue,Managers)似乎不够用. 有适当的方法吗?解决方法:我已经使用Celery和Redis在高内存应用程序中进行实时多处理,但这实际上取决于您要完成的工作. 与内置...

如何在Python中通过管道传递Python进程的输出?【代码】

我正在编写一个程序,使用youtube-dl从YouTube下载视频. 我曾经用子流程调用youtube-dl:import subprocessp = subprocess.Popen([command], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines = True)然后,我将通过调用以下命令读取进程的输出:for line in iter(p.stdout.readline, ""):hide_some_stuff_using_regex()show_some_stuff_using_regex()但是,我更喜欢将youtube-dl用作Python类.所以...

在Python子进程中使用反引号【代码】

我想通过Python脚本运行此git命令并获取其输出:git diff --name-only mybranch `git merge-base mybranch develop`该命令的目的是查看自从上次与developer合并以来,在mybranch上进行了哪些更改. 为此,我使用subprocess.Popen:output = subprocess.Popen(["git", "diff", "--name-only", "mybranch", "`git merge-base mybranch develop`"], stdout=subprocess.PIPE, shell=True)但是,这不起作用.变量output.communicate()[0]只是...

Python瓶进程到达超时连接【代码】

我有一个问题,在一定时间后无法连接我的瓶子服务器,并且出现连接重置超时连接错误. 当检查进程是否正在运行时,我发现它正在运行,但是在终止该进程并再次运行之后,服务器将返回服务请求. 知道会是什么吗?我用异常捕获包装了大多数函数,但是并没有帮助我理解问题.我想知道是否有人用过瓶子并且遇到过这样的问题解决方法:我的猜测是因为bottle是单线程的,并且正在按要求悬挂.我建议尝试使用多线程服务器(例如cherrypy)以查看是否可以...

Python:进程在futex(0x2a5fcc0,FUTEX_WAIT_PRIVATE,0,NULL在多线程中挂起【代码】

所以我有一个队列:q = Queue.Queue()我在里面放一些东西.items = ["First", "Second"] for val in items:q.put(val)我正在生成15个线程.for i in range(15):tname = 't-%s' % it = my_thread(some_func, q, tname)t.start()q.join()my_thread类的外观如下:class my_thread(threading.Thread):def __init__(self, some_func, q_, name=''):threading.Thread.__init__(self)self.func = some_funcself.process_q = q_self.name = n...

带有变量的Python子进程调用【代码】

这个问题已经在这里有了答案: > OSError: [Errno 2] No such file or directory while using python subprocess in Django 1个我目前正在为客户编写脚本. 该脚本从配置文件读取.然后将其中一些信息存储在变量中. 之后,我想使用subprocess.call执行安装命令所以我正在使用这些变量来构建mount命令call("mount -t cifs //%s/%s %s -o username=%s" % (shareServer, cifsS...

Python之多进程(multiprocessing)学习【3】:平常状态,多线程,多进程比较【图】

一. 代码import multiprocessing as mp import threading as td import timedef job(q):res = 0for i in range(1000000):res += i+i**2+i**3q.put(res) # queuedef multicore():q = mp.Queue()p1 = mp.Process(target=job, args=(q,))p2 = mp.Process(target=job, args=(q,))p1.start()p2.start()p1.join()p2.join()res1 = q.get()res2 = q.get()print('multicore:' , res1+res2)def normal():res = 0for _ in range(2):for i in r...

python multiprocessing-在正在运行的进程上进行类似选择,以查看已完成的进程【代码】

我想运行15个命令,但一次只能运行3个 测试文件import multiprocessing import time import random import subprocessdef popen_wrapper(i):p = subprocess.Popen( ['echo', 'hi'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)stdout, stderr = p.communicate()print stdouttime.sleep(randomint(5,20)) #pretend it's doing some workreturn p.returncodenum_to_run = 15 max_parallel = 3running = [] for i in range(num_t...

Python之多进程(multiprocessing)学习:创建进程,join方法【图】

一. 解析 Python多进程和 多线程其实是类似的 用法,之前我有写过多线程的博客,可以查看。 二. 代码 我最开始运行 报错没有Process这个模块。 于是检查自己是不是拼错了,发现没有。又检查是不是没有安装multiprocessing这个模块, 发现自带的是。最后发现我自己把Python包命名成了multiprocessing,改过之后就可以了。import multiprocessing as mpdef job():for i in range(10):print(i)if __name__ == '__main__':p1...

使用nohup ps aux grep kill启动/停止后台Python进程【代码】

我通常使用:nohup python -u myscript.py &> ./mylog.log & # or should I use nohup 2>&1 ? I never remember启动一个即使退出后仍想继续运行的后台Python进程,并且:ps aux |grep python # check for the relevant PID kill <relevantPID>它可以工作,但是执行所有这些步骤很烦人. 我读过一些方法,您需要将PID保存到某个文件中,但这更加麻烦. 有没有一种干净的方法可以轻松启动/停止Python脚本?喜欢:startpy myscript.py...

如何将带有空格的字符串从Python发送到Bash子进程作为单个值?【代码】

我正在尝试将变量从python脚本发送到bash脚本.我正在使用popen,如下所示:subprocess.Popen(["bash", "-c", ". mainGui_functions.sh %d %s" % (commandNum.get(), entryVal)])但是,entryVal有时可以包含一个或多个空格字符.在那种情况下,我将字符串分成多个参数($2,$3 ..) 如何在一个参数中得到它?解决方法:简单的解决方案#1:如果您在命令行上键入输入,则可以使用完全相同的方法进行操作;用引号引起来:subprocess.Popen(["bas...

Python子进程.Popen PIPE和SIGPIPE【代码】

当我浏览帖子时,我在下面的here上遇到了此示例,这就是说proc1的适当退出需要调用proc1.stdout.close(),从而生成SIGPIPE.import subprocessproc1 = subprocess.Popen(['ps', 'cax'], stdout=subprocess.PIPE) proc2 = subprocess.Popen(['grep', 'python'], stdin=proc1.stdout,stdout=subprocess.PIPE, stderr=subprocess.PIPE)proc1.stdout.close() # Allow proc1 to receive a SIGPIPE if proc2 exits. out, err = proc2.communi...

Python进程、线程、协程详解【图】

进程与线程的历史 我们都知道计算机是由硬件和软件组成的。硬件中的CPU是计算机的核心,它承担计算机的所有任务。 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配、任务的调度。 程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等。 每次执行程序的时候,都会完成一定的功能,比如说浏览器帮我们打开网页,为了保证其独立性,就需要一个专门的管理和控制执行程序的数据结构——进程...

重新启动后,Python进程停止响应SIGTERM / SIGINT【代码】

我在使用看门狗进程运行某些python进程时遇到了一个奇怪的问题. 看门狗进程是用python编写的,并且是父进程,它具有一个名为start_child(name)的函数,该函数使用subprocess.Popen打开子进程.记录了Popen对象,以便看门狗可以使用poll()监视进程,并最终在需要时以Terminate()结尾.如果孩子意外死亡,看门狗会再次调用start_child(name)并记录新的Popen对象. 有7个子进程,所有子进程也是python.如果我手动运行任何子级,则可以使用kill发送...

Python多任务之进程【代码】【图】

Process多进程 进程的概念 程序是没有运行的代码,静态的; 进程是运行起来的程序,进程是一个程序运行起来之后和资源的总称; 程序只有一个,但同一份程序可以有多个进程;例如,电脑上多开QQ; 程序和进程的区别在于有没有资源,进程有资源而程序没有资源,进程是一个资源分配的基本单元;程序在没运行的时候没有资源,没有显卡,没有网卡,等等;双击运行后有摄像头,有网速等等,就叫做进程; 进程的状态 进程状态图就绪态:运...