【python – 是否可以在子进程中运行函数而无需线程化或编写单独的文件/脚本.】教程文章相关的互联网学习教程文章

python – 父进程和子进程都可以访问记录器吗?【代码】

在python中,如果在父进程中配置了记录器,那么子进程是否也会获得该记录器?更清楚的是,在我的应用程序中,我通过执行logger = logging.getlogger()并为其添加处理程序来为父进程配置根记录器.现在,当一个子进程被分叉并且确实如此logger = logging.getlogger() logger.info("dfsdf")然后根据父级的根记录器处理所有日志.我没有为孩子配置根记录器.这怎么可能?它们是两个不同的过程,那么它们如何才能拥有相同的记录器?解决方法:分叉...

如果创建了multiprocessing.Pool,Python子进程wait()将失败【代码】

在一个使用subprocess到gzip输出的简单脚本中(使用subprocess.PIPE到外部命令的stdin),如果在创建子进程和关闭进程的stdin之间创建了multiprocessing.Pool对象,则subprocess.wait ()将永远挂起.import multiprocessing import subprocessproc = subprocess.Popen(["gzip", "-c", "-"], stdout=open('filename', 'w'), stdin=subprocess.PIPE) multiprocessing.Pool() proc.stdin.close() proc.wait()移动multiprocessing.Pool调用一...

python – 如何检查子进程是否已完成?【代码】

我正在开始一个过程:for i in range(1, processes + 1):hup = MyURLParser() //A class I madep = Process(target = hup.run)p.start()在那之后,让主线程不立即退出我做:while (True):print("Main sleeping...")sleep(20)而不是这样做,我如何检查每个子进程是否仍在从主线程运行?然后,我没有无限循环,而是可以在正确的时间突破循环并做其他事情….解决方法:p.is_alive()告诉您进程是否正在运行. 要等到它结束,请使用p.join().

Python字符串作为子进程的文件参数【代码】

我试图将一个文件传递给一个程序(MolPro),我用Python开始作为子进程. 它通常将文件作为参数,在控制台中如下所示:path/molpro filename.ext其中filename.ex包含要执行的代码.或者一个bash脚本(我在Python中尝试做的):#!/usr/bin/env bash path/molpro << EOF# MolPro code EOF我正在尝试在Python中执行上述操作.我试过这个:from subprocess import Popen, STDOUT, PIPE DEVNULL = open('/dev/null', 'w') # I'm using Python 2 ...

访问python中子进程的标准输出【代码】

如何在将子进程发送到主进程之前访问它们的stdout?我正在使用multiprocessing.Pool模块来生成子进程池.解决方法:主进程和子进程共享相同的标准输入和标准输出文件描述符.他们无法控制对方写给他们的内容.你唯一能做的就是用主进程可以控制的其他东西替换子进程中的stdin和stdout.作为示例,您可以子类化像StringIO这样的虚拟文件对象,并通过Queue将子项写入此对象的数据重定向到父对象:import sys from multiprocessing import Qu...

python子进程覆盖用于stdout的文件 – 我需要它附加到文件(windows)【代码】

我想将subprocess.call()的STDOUT追加到现有文件中.我的代码覆盖了文件 – log_file = open(log_file_path, 'r+') cmd = r'echo "some info for the log file"' subprocess.call(cmd, shell=True, stdout=log_file, stderr=STDOUT) log_file.close()我正在寻找相当于>>在subprocess.call()或subprocess.Popen()中.这让我疯狂地试图找到它.. 更新: 到目前为止,我已经将代码更新为import subprocesslog_file = open('test_log_file....

python – 用子进程包装cmd.exe【代码】

我尝试使用以下程序在Windows下包装cmd.exe但它不起作用,它似乎等待某些东西并且不显示任何内容.知道这里有什么问题吗?import subprocessprocess = subprocess.Popen('cmd.exe', shell=False, stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=None) process.stdin.write("dir\r\n") output = process.stdout.readlines() print output解决方法:这会锁定,因为process.stdout.readlines()读取进程的所有输出(直到它终止...

如何使用pexpect在python中获得子进程的自发输出【代码】

这与我的另一个帖子multithreading issue with wx.TextCtrl (or underlying GTK+)相关,在经过主要线程调用GUI交互的纠正后,我发现它再次出现在管道块缓冲问题上.那么如何从subprocess.stdout获得自发输出? 简而言之,目前我正在使用subprocess.popen来启动一个外部长时间运行的程序.launchcmd=["EXTERNAL_PROGRAM_EXE"]p = subprocess.Popen(launchcmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)se...

python – 如何让子进程每5秒暂停执行一次外部程序?【代码】

给定一个外部程序,本例中是python target.py: target.pyimport time, itertools A = itertools.count() while True:time.sleep(.1)print A.next()我正在寻找一种运行命令的方法,我们可以假设除了启动和停止之外我无法控制5秒钟.那时,我想暂停执行(类似于linux上的control-Z,这是我的目标平台),运行一些内部代码然后继续执行子进程.到目前为止我已经有了 reader.pyimport subprocess, signal, timecmd = "python target.py" P = su...

python – PyCharm IDE断点在子进程调用中不起作用【代码】

我有一个Flask项目运行与Scrapy蜘蛛的子进程调用:class Utilities(object):@staticmethoddef scrape(inputs):job_id = str(uuid.uuid4())project_folder = os.path.abspath(os.path.dirname(__file__))subprocess.call(['scrapy', 'crawl', "ExampleCrawler", "-a", "inputs=" + str(inputs), "-s", "JOB_ID=" + job_id],cwd="%s/scraper" % project_folder)return job_id即使我在项目的Python调试器中启用了“在调试时自动附加到...

使用子进程模块从python启动jython程序?【代码】

我有一个jython服务器脚本(称为rajant_server.py),它与java api文件交互,通过特殊的网络无线电进行通信.我有一个python程序充当客户端(并做其他几件事).目前,我必须先打开一个命令/终端窗口并输入以下内容来启动服务器:cd [path to directory containing rajant_server.py jython rajant_server.py一旦服务器成功连接,它就会等待客户端,我开始运行它:cd [path to directory containing python client program] python main.py当客...

python – 拥有子进程允许rpc-server在子进程存活时重新启动【代码】

脚本 我有一个rpc-server需要产生持续数天的重要进程(multiprocessing.Process).出于安全/安全的原因,我不希望这些进程生存依赖于rpc-server.因此,我希望服务器能够在流程运行时能够重启并能够重启. 孤儿进程 这个问题是可以解决的(不要粘贴它你不想放弃以前的工作,它将关闭你的python会话):import os import multiprocessing import timedef _job(data):for _ in range(3):print multiprocessing.current_process(), "is working...

使用os.kill将SIGINT发送到Python子进程,就像按下Ctrl C一样【代码】

在Windows上使用python 3.4.我试图终止一个孩子处理模拟一个人按Ctrl C(Linux上的Ctrl D). 我刚刚添加了处理程序来检查信号是否正在被处理. I used the idea from this question 目标是捕获KeyboardInterrupt(SIGINT),并释放资源.但是,如果SIGINT不是来自键盘,似乎不会抛出异常.这就是为什么我创建了一个处理程序,但该进程似乎根本不运行处理程序…import multiprocessing import time import signal import signal import os impo...

python – 如何使子进程只传达错误【代码】

我们已经在许多项目中创建了一个商品函数,它使用子进程来启动命令.这个功能如下:def _popen( command_list ):p = subprocess.Popen( command_list, stdout=subprocess.PIPE,stderr=subprocess.PIPE )out, error_msg = p.communicate()# Some processes (e.g. system_start) print a number of dots in stderr# even when no error occurs.if error_msg.strip('.') == '':error_msg = ''return out, error_msg对于大多数流程,这可以...

python – Spawn子进程,期望控制台输入没有阻塞?【代码】

我试图通过调用cvs.exe进程从Python进行CVS登录.手动调用cvs.exe时,它会向控制台输出一条消息,然后等待用户输入密码. 用subprocess.Popen调用它时,我注意到调用阻塞了.代码是subprocess.Popen(cvscmd, shell = True, stdin = subprocess.PIPE, stdout = subprocess.PIPE,stderr = subprocess.PIPE)我认为它会阻塞,因为它正在等待输入,但我的期望是调用Popen会立即返回,然后我可以调用subprocess.communicate()来输入实际的密码.如何...