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

python多处理:为什么在终止后进程失效?【代码】

我有一些python多处理代码,父进程启动一堆子工作进程,然后在一段时间后终止它们:from multiprocessing import ProcessnWorkers = 10 curWorkers = [] for iw in range(nWorkers):pq = Process(target=worker, args=(worker's_args_here))pq.start()curWorkers.append(pq)# Do work here...for pw in curWorkers:pw.terminate()但是,子进程在终止后很长时间都显示为已停止运行.他们是僵尸进程吗?更重要的是,我应该如何终止它们以便...

使用进程替换作为Python的输入文件两次【代码】

考虑以下python脚本#test.py import sys inputfile=sys.argv[1] with open(inputfile,'r') as f:for line in f.readlines():print linewith open(inputfile,'r') as f:for line in f.readlines():print line现在我想在替换进程上运行test.py,例如,python test.py <( cat file | head -10)似乎第二个f.readlines返回空.为什么这样做,有没有办法做到这一点,而无需指定两个输入文件?解决方法:>为什么这样. >进程替换通过创建命名管道...

python – 列表中的多进程多个文件【代码】

我试图读取一个列表,其中包含同步存储在列表中的N个.csv文件. 现在我做以下事情: 导入多进程 >空列表>使用.csv的listdir附加列表> def A() – 偶数文件(list [:: 2])> def B() – 奇数文件(列表[1 :: 2]>流程1 def A()>过程2 def B()def read_all_lead_files(folder):for files in glob.glob(folder+"*.csv"):file_list.append(files)def read_even():file_list[::2] def read_odd():file_list[1::2] p1 = Process(target=rea...

python多线程、多进程、协程笔记【代码】

import threading import time import multiprocessing import asynciomovie_list = [斗破.avi, 复仇者联盟.mp4, 斗罗大陆.rmvb] music_list = [七里香.mp3, 美人鱼.mp3, xxx.obi] movie_format = [avi, mp4, rmvb] music_format = [mp3]def play(playlist):for i in playlist:if i.split(.)[1] in movie_format:print(您现在正在收看:{}.format(i))time.sleep(2)elif i.split(.)[1] in music_format:print(您现在正在收听:{}.fo...

python – 生成新进程时导入会发生什么?【代码】

生成新进程时导入的模块变量会发生什么变化? IEwith concurrent.futures.ProcessPoolExecutor(max_workers=settings.MAX_PROCESSES) as executor:for stuff in executor.map(foo, paths):哪里:def foo(str):x = someOtherModule.fooBar()foob??ar访问someOtherModule开头声明的东西: someOtherModule.py:myHat='green'def fooBar():return myHat具体来说,我有一个模块(称为Y),它在任何函数之外的顶部初始化了py4j网关.在模块X中...

python:获取要修改的实际环境变量并传递给子进程【代码】

好吧,似乎环境变量的情况在python中不一致. 使用os.environ或os.getenv读取环境变量并在导入os模块时返回env的状态并不是秘密.使用os.environ键的赋值仍然可以更新环境. 但是,一旦我使用os.putenv或运行任何修改了环境的ctypes代码,我就会在实际的进程环境和os.environ之间产生不一致. Nuff说,无论是用os.system还是子进程库创建的,这个实际环境都将保留给子进程.在我的情况下,这是理想的行为. 现在我想查看并更改传递给子进程的环...

python – 将子进程与traceroute一起使用时没有错误输出【代码】

我正在尝试获取traceroute失败时返回的错误消息.例如:from subprocess import CalledProcessError, check_outputtry: output = check_output(["traceroute", "error"]) except CalledProcessError as error:output = error.outputprint "error: {}".format(output)输出:error:我尝试使用output = str(error.output)但输出保持为空.执行上述代码时会向终端打印一条错误消息,因此应该可以将其分配给变量,对吧?解决方法:如:https:...

python – 一分钟内创建了多少个进程?【代码】

我想知道Linux内核创建了多少进程一段时间. 通常在一分钟之内. 我的背景:如果一分钟内创建的进程太多,那就有问题了.我们的大多数遗留代码库都是从shell迁移到python,但有时仍然有一些shell脚本很慢,因为它们有很多进程. 我想从这个数字创建一个图表.然后我想检查哪个主机以及创建了这么多进程的原因. 我想用Python实现它. 回答如何从/ proc或/ sys读取这个将是伟大的. 如果解决方案适用于环绕,如果达到pid_max,那将是很好的. 限制...

python – 如何从分叉进程发送大量数据?【代码】

我有一个库的ctypes包装器.不幸的是,这个库不是100%可靠(偶尔会出现段错误等).由于它的使用方式,我希望包装器能够在库崩溃时具有相当的弹性. 这样做的最佳方法似乎是分配一个过程并从孩子那里发回结果.我想沿着这些方向做点什么:r, w = os.pipe() pid = os.fork()if pid == 0:# childresult = ctypes_fn()os.write(w, pickle.dumps(result))os.close(w) else:# parentos.waitpid(pid, 0)result = os.read(r, 524288) # can be th...

python – 如何运行子进程,在GUI中显示其输出并允许它终止?【代码】

我一直在尝试编写一个运行子进程的应用程序,并且(除其他外)在GUI中显示它们的输出,并允许用户单击按钮取消它们.我开始这样的过程:queue = Queue.Queue(500) process = subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) iothread = threading.Thread(target=simple_io_thread,args=(process.stdout, queue)) iothread.daemon=True iothread.start()其中simple_io_thread定义如下:def simple_io_thread...

Python:为长时间运行的后台进程生成或线程?

我打算用Python进行长时间运行的后台进程,但我仍然不确定是使用os.spawnle还是使用线程.我只读过它,因此我对spawn或thread没有多少经验.有什么经验法则何时使用? 谢谢堆解决方法:请务必考虑Global Interpreter Lock.如果长时间运行的进程是CPU密集型的,那么您应该将其作为一个独立的进程.另一方面,如果它会花费大量的时间来阻止,那么GIL并不是那么大的交易,你应该没关系,让它成为一个线程. 此外,如果您不需要os.spawnle提供的特定...

Python子进程在接收stdin EOF时会遇到神秘的延迟【代码】

我将我在应用程序中看到的问题减少到下面的测试用例中.在此代码中,父进程同时生成2(您可以生成更多)子进程,这些子进程通过stdin从父进程读取大消息,休眠5秒,然后回写一些内容.但是,在某处发生了意外的等待,导致代码在10秒内完成而不是预期的5. 如果设置verbose = True,则可以看到分散子进程正在接收大部分消息,然后等待3个字符的最后一个块 – 它没有检测到管道已经关闭.此外,如果我只是不对第二个过程做任何事情(doreturn = True)...

Python进程间通信

我有一个Python应用程序(使用GUI,使用PyQt4),在几个实例中由用户生成.该应用程序用于执行一些长时间运行的任务(大约几个小时到几天),所以我愿意添加一个额外的“监控”应用程序,它将执行以下操作: >查找其他应用程序的所有正在运行的进程>获取正在运行的操作的状态(完成的工作,百分比,错误消息,……)>最终向应用程序发送一些命令,告诉他们暂停,恢复,停止…… 适合这项工作的一种方法是RPyC,这是唯一的问题,它似乎仅适用于TCP套接字...

将复杂命令转换为python子进程【代码】

我有以下命令:$ffmpeg -i http://url/1video.mp4 2>&1 | perl -lane 'print $1 if /(\d+x\d+)/' 640x360我正在尝试将此命令的输出设置为python变量.这是我到目前为止:>>> from subprocess import Popen, PIPE >>> p1 = Popen(['ffmpeg', '-i', 'http://url/1video.mp4', '2>&1'], stdout=PIPE) >>> p2=Popen(['perl','-lane','print $1 if /(\d+x\d+)/'], stdin=p1.stdout, stdout=PIPE) >>> dimensions = p2.communicate()[0] '...

将Xvfb和CutyCapt作为Python子进程运行【代码】

我正在尝试使用CutyCapt在后台截取屏幕截图 我的应用程序是用python编写的,并通过运行子进程调用CutyCapt. 在本地(Windows)工作正常,但Windows的CutyCapt.exe不需要x服务器.当我尝试在我的ubuntu盒子上执行我的代码(通过python子进程)时,它咆哮我没有向Xvfb提供命令.但是,如果我自己在盒子上运行命令它可以正常工作. 适用于框的命令:box$xvfb-run --server-args="-screen 0, 1100x800x24" ./CutyCapt --url=http://www.google.com...