【python – 跨进程共享多处理同步原语】教程文章相关的互联网学习教程文章

python – 保存子进程命令的错误消息【代码】

使用子进程运行bash命令时,我可能会遇到命令无效的情况.在这种情况下,bash将返回错误消息.我们怎样才能抓住这条消息?我想将此消息保存到日志文件中.以下是一个示例,我尝试在不存在的目录中列出文件.try:subprocess.check_call(["ls", "/home/non"]) df = subprocess.Popen(["ls", "/home/non"], stdout=subprocess.PIPE) output, err = df.communicate()# process outputs except Exception as error: print errors...

Python tkinter:在子进程调用之间更新GUI【代码】

我编写了一个多次调用.cmd文件的GUI(使用不同的参数)class App:def process(self):for filename in os.listdir(path):subprocess.call(['script.cmd', filename])self.output('processed ' + filename)def output(self, line):self.textarea.config(state = NORMAL)self.textarea.tag_config("green", background="green", foreground="black")self.textarea.insert(END, line, ("green"))self.textarea.yview(END)self.textarea.c...

如何在wxPython TextCtrl中捕获在单独进程中运行的shell脚本的输出?【代码】

一个长时间运行的shell脚本生成stdout和stderr,我想在GUI中的textctrl上显示它.这可以使用线程并将GUI线程与shell脚本的线程分开.然而,当我实现多处理时,我遇到了障碍.这是我的下载代码:#!/usr/bin/env pythonimport wx import sys, subprocess from multiprocessing import Process, Queue from Queue import Emptyclass MyFrame(wx.Frame):def __init__(self, *args, **kwds):wx.Frame.__init__(self, *args, **kwds)self.butto...

Python – 在守护进程中调用multiprocessing.pool【代码】

我有一个Python脚本,它产生一个守护进程.在这个过程中,我使用multiprocessing.pool同时运行1到4个进程. 当我在守护进程外部运行它时,它运行完美(即,当我设置run_from_debugger = True – 请参阅下面的代码),但如果我通过守护进程运行代码(即run_from_debugger = False),则永远不会执行async_function . 是否可以在守护进程中使用multiprocessing.pool ???我使用Python-daemon 1.6作为我的守护进程包(如果重要的话). 码:def loop_...

python – 是否有可能重新编写子进程?【代码】

我知道os.nice()它对于父进程来说是完美的,但是我需要对子进程进行管理.我找到了这样做的方法,但似乎不是很方便和过分:os.system("renice -n %d %d" % ( new_nice, suprocess.pid ) )并且它在返回后不会返回得到很好的水平. 在python中有更简洁的方法来管理子进程吗?解决方法:使用subprocess.Popen的preexec_fn参数:If preexec_fn is set to a callable object, this object will be called in the child process just before t...

python – 使用线程和进程并发写入同一文件【代码】

什么是正确的解决方案,以确保在使用许多线程和进程时文件永远不会被破坏. 线程版本,关心打开错误.lock = threading.RLock() with lock:try:f = open(file, 'a')try:f.write('sth')finally:f.close() # try close in any circumstances if open passedexcept:pass # when open failed对于进程,我猜必须使用multiprocessing.Lock 但如果我想要2个进程,并且第一个进程拥有2个线程(每个进程使用一个文件) 只有理论,但我想知道如何将同步...

python – 如何让Django用户注册单步(而不是两步)进程与电子邮件强制?【代码】

我希望Django发送电子邮件到用户的电子邮件地址,登录详细信息,一旦管理员将新用户添加到管理站点.所以我尝试使用Django信号,但只是becoz django用户注册是一个两步过程信号得到通知的第一步只有没有电子邮件地址的电子邮件功能(第二步).我的信号代码:def email_new_user(sender, **kwargs):if kwargs["created"]: # only for new usersnew_user = kwargs["instance"]send_mail('Subject here', 'Here is the message.', 'from@ex...

python – 在后台执行子进程【代码】

我有一个python脚本,它接受一个输入,将其格式化为一个命令,调用服务器上的另一个脚本,然后使用子进程执行:import sys, subprocessthingy = sys.argv[1]command = 'usr/local/bin/otherscript.pl {0} &'.format(thingy) command_list = command.split() subprocess.call(command_list)我附加&到最后因为otherscript.pl需要一些时间来执行,我更喜欢在后台运行.但是,脚本似乎仍然执行而没有让我重新控制shell,我必须等到执行完成后才...

Python子进程参数【代码】

例如我正在使用ffplay并希望运行此命令-bufsize [:stream_specifier]整数(输出,音频,视频) 目前我有这个:subprocess.call(["ffplay", "-vn", "-nodisp","-bufsize 4096", "%s" % url])但这说它无效.解决方法:正如JBernardo在评论中提到的那样,将“-bufsize 4096”参数分成两个,“ – bufsize”,“4096”.当subprocess.call与shell = False(默认值)一起使用时,每个参数都需要分开.您还可以指定shell = True并将整个命令作为单个字...

如何使用Python中的Managers()在多个进程之间共享字符串?【代码】

我需要读取主进程中的multiprocessing.Process实例编写的字符串.我已经使用Managers和队列将参数传递给进程,所以使用Managers似乎很明显,but Managers do not support strings:A manager returned by Manager() will support types list, dict,Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event,Queue, Value and Array.如何使用多处理模块中的Managers共享由字符串表示的状态?解决方法:多处理的管理器可以...

如何在python进程中限制内存使用【代码】

我在具有16GB Ram和64位操作系统的Linux机器上运行Python 2.7.我编写的python脚本可以将太多数据加载到内存中,这会使机器速度降低到我甚至无法再杀死进程的程度. 虽然我可以通过调用来限制内存:ulimit -v 12000000在运行脚本之前的shell中,我想在脚本本身中包含一个限制选项.在我看的每个地方,资源模块被引用为具有与ulimit相同的功能.但是打电话:import resource _, hard = resource.getrlimit(resource.RLIMIT_DATA) resource....

使用python在不同的virtualenv中运行子进程【代码】

假设我在2种不同的虚拟环境中安装了2个不同版本的应用程序. myapp v1.0和myapp v2.0. 现在我想比较一下.比较是用python本身编写的.最好的方法是什么?我们假设我可以单独运行它们并且都写一个输出文件,我可以稍后比较. 一种方法是编写一个bash脚本(这就是我目前所拥有的).我激活一个virtualenv,运行myapp v1.0,激活另一个virtualenv,运行myapp v2.0.稍后在这些文件上运行比较模块.但是我想在那里添加更多的动态(采用一些可选的参数...

Python子进程模块比命令慢得多(不建议使用)【代码】

所以我写了一个脚本,在命令行上使用nc访问一堆服务器,最初我使用Python的命令模块并调用commands.getoutput(),脚本在大约45秒内运行.由于命令已弃用,我想将所有内容更改为使用子进程模块,但现在脚本需要2m45s才能运行.任何人都知道为什么会这样? 我之前的所作所为:output = commands.getoutput("echo get file.ext | nc -w 1 server.com port_num")我现在有p = Popen('echo get file.ext | nc -w 1 server.com port_num', shell=...

Python:并行运行子进程【代码】

参见英文答案 > Python subprocess in parallel 3个我有以下代码将md5sums写入日志文件for file in files_output:p=subprocess.Popen(['md5sum',file],stdout=logfile) p.wait()>这些是并行写的吗?即如果md5sum对其中一个文件花费很长时间,那么在等待前一个文件完成之前是否会启动另一个文件?>如果上面的答案是肯定的,我可以假设写入日志文件的md5sums的顺序可能因md5sum对每个文件的持续时间...

如果任何一个进程在python中找到匹配项,如何让所有pool.apply_async进程停止【代码】

我有以下代码利用多处理迭代大型列表并找到匹配.一旦在任何一个进程中找到匹配,我如何才能停止所有进程?我见过一些例子,但我似乎都不适合我在这里做的事情.#!/usr/bin/env python3.5 import sys, itertools, multiprocessing, functoolsalphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12234567890!@#$%^&*?,()-=+[]/;" num_parts = 4 part_size = len(alphabet) // num_partsdef do_job(first_bits):for x in ...

同步 - 相关标签