473,322 Members | 1,307 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,322 software developers and data experts.

Process forking on Windows

Hi everyone,
I have a python program that will need to interact with an MQSeries
trigger monitor.

It does this fine but it hogs the trigger monitor while it executes.

I'd like to fork the program off and terminate the parent process so
that the trigger monitor frees up.
Does anyone how this can be accomplished on a Windows platform?

I've looked at doing this via the subprocess module but this doesn't
look like the correct approach.

Any help you can provide would be greatly appreciated.

Thanks
May 17 '06 #1
9 2130
Andrew Robert wrote:
Hi everyone,
I have a python program that will need to interact with an MQSeries
trigger monitor.

It does this fine but it hogs the trigger monitor while it executes.

I'd like to fork the program off and terminate the parent process so
that the trigger monitor frees up.
Does anyone how this can be accomplished on a Windows platform?

I've looked at doing this via the subprocess module but this doesn't
look like the correct approach.

Any help you can provide would be greatly appreciated.

Thanks

The "subprocess" module gives a (mostly) platform independent way for
one process to start another. It provides a number of bells and
whistles, and is the latest module on a long history of older modules to
provide such functionality.

Gary Herron

May 17 '06 #2
Andrew Robert wrote:
Hi everyone,
I have a python program that will need to interact with an MQSeries
trigger monitor.

It does this fine but it hogs the trigger monitor while it executes.

I'd like to fork the program off and terminate the parent process so
that the trigger monitor frees up.
<just-asking>
Is this really the solution ?
</just-asking>

Does anyone how this can be accomplished on a Windows platform?


AFAIK, there's no fork in Windows - you might want to give a try with
CreateProcess.
http://www.byte.com/art/9410/sec14/art3.htm
http://msdn.microsoft.com/library/de...l/UCMGch01.asp

HTH
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'o****@xiludom.gro'.split('@')])"
May 17 '06 #3
bruno at modulix wrote:
Andrew Robert wrote:
Hi everyone,
I have a python program that will need to interact with an MQSeries
trigger monitor.

It does this fine but it hogs the trigger monitor while it executes.

I'd like to fork the program off and terminate the parent process so
that the trigger monitor frees up.


<just-asking>
Is this really the solution ?
</just-asking>
Does anyone how this can be accomplished on a Windows platform?


AFAIK, there's no fork in Windows - you might want to give a try with
CreateProcess.
http://www.byte.com/art/9410/sec14/art3.htm
http://msdn.microsoft.com/library/de...l/UCMGch01.asp

HTH

Unfortunately there is a real need for this.

The MQSeries trigger monitor is single threaded.

Because of this, my program would absorb it until it completes.

The way to get around this would be to fork off and terminate the parent.

Unfortunately, Windows appears to be somewhat stubborn about it.

Creating a subprocess does not alleviate the need to get the originating
process out of the trigger monitor.

May 17 '06 #4
Andrew Robert wrote:
bruno at modulix wrote:

Andrew Robert wrote:

Hi everyone,
I have a python program that will need to interact with an MQSeries
trigger monitor.

It does this fine but it hogs the trigger monitor while it executes.

I'd like to fork the program off and terminate the parent process so
that the trigger monitor frees up.

<just-asking>
Is this really the solution ?
</just-asking>
Does anyone how this can be accomplished on a Windows platform?

AFAIK, there's no fork in Windows - you might want to give a try with
CreateProcess.
http://www.byte.com/art/9410/sec14/art3.htm
http://msdn.microsoft.com/library/de...l/UCMGch01.asp

HTH

Unfortunately there is a real need for this.

The MQSeries trigger monitor is single threaded.

Because of this, my program would absorb it until it completes.

The way to get around this would be to fork off and terminate the parent.

Unfortunately, Windows appears to be somewhat stubborn about it.

Creating a subprocess does not alleviate the need to get the originating
process out of the trigger monitor.


The windows CreateProcess call has many of the same semantics as the
Unix fork, i.e., a new process is created sharing all the resources of
the original process. The "subprocess" modules uses CreateProcess, but
if that does not give you sufficient control over the process creation,
you can call CreateProcess directly via the "win32process" module in the
win32all package.

However, I still don't understand *what* the "MQSeries trigger monitor"
is or *how* it would create the need for such a solution.

Gary Herron
May 17 '06 #5
Gary Herron wrote:
Andrew Robert wrote:
<snip>

The windows CreateProcess call has many of the same semantics as the
Unix fork, i.e., a new process is created sharing all the resources of
the original process. The "subprocess" modules uses CreateProcess, but
if that does not give you sufficient control over the process creation,
you can call CreateProcess directly via the "win32process" module in the
win32all package.

However, I still don't understand *what* the "MQSeries trigger monitor"
is or *how* it would create the need for such a solution.

Gary Herron

MQSeries is a rather interesting piece of middle-ware offered by IBM
that allows you to link disparate hosts/applications together via XML
messaging and application specific queues.

In the broadest sense, think of MQSeries like a large switchboard
connecting everything together.

Message queues can be programmed to do something via a mq application
process such as a rule to take action when first, 5th, etc message arrives.

The state of queues and their linked processes are controlled by the
trigger monitor.

The trigger monitor can only deal with one running process at a time.

In this situation, it is possible for a process(my python program) to
monopolize and block other processes from being triggered.

Ideally, this needs to be avoided through the use of a fork.

If you are interested, you can get all kinds of Websphere MQSeries and
Websphere Message Broker information at
http://www-306.ibm.com/software/inte...n/wmq/library/
On a side note, I use the pymqi module to make calls to MQSeries.
May 17 '06 #6
Andrew Robert wrote:
bruno at modulix wrote:
Andrew Robert wrote:
Hi everyone,
I have a python program that will need to interact with an MQSeries
trigger monitor.

It does this fine but it hogs the trigger monitor while it executes.

I'd like to fork the program off and terminate the parent process so
that the trigger monitor frees up.


<just-asking>
Is this really the solution ?
</just-asking>
Does anyone how this can be accomplished on a Windows platform?


AFAIK, there's no fork in Windows - you might want to give a try with
CreateProcess.
http://www.byte.com/art/9410/sec14/art3.htm
http://msdn.microsoft.com/library/de...l/UCMGch01.asp

Unfortunately there is a real need for this.
The MQSeries trigger monitor is single threaded.

Because of this, my program would absorb it until it completes.
The way to get around this would be to fork off and terminate the parent.
Unfortunately, Windows appears to be somewhat stubborn about it.
Creating a subprocess does not alleviate the need to get the originating
process out of the trigger monitor.


Have you *really* read the material pointed by the above links ?

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'o****@xiludom.gro'.split('@')])"
May 18 '06 #7
Andrew Robert wrote:
Gary Herron wrote:
Andrew Robert wrote:


<snip>
The windows CreateProcess call has many of the same semantics as the
Unix fork, i.e., a new process is created sharing all the resources of
the original process. The "subprocess" modules uses CreateProcess, but
if that does not give you sufficient control over the process creation,
you can call CreateProcess directly via the "win32process" module in the
win32all package.

However, I still don't understand *what* the "MQSeries trigger monitor"
is or *how* it would create the need for such a solution.

Gary Herron


MQSeries is a rather interesting piece of middle-ware offered by IBM
that allows you to link disparate hosts/applications together via XML
messaging and application specific queues.

In the broadest sense, think of MQSeries like a large switchboard
connecting everything together.

Message queues can be programmed to do something via a mq application
process such as a rule to take action when first, 5th, etc message arrives.

The state of queues and their linked processes are controlled by the
trigger monitor.

The trigger monitor can only deal with one running process at a time.

In this situation, it is possible for a process(my python program) to
monopolize and block other processes from being triggered.

Ideally, this needs to be avoided through the use of a fork.


Since there's no fork() on Windows, how do other programs working with
MQSeries deal with this situation ? How does it comes that your program
'monopolize' the monitor, while other don't ?
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'o****@xiludom.gro'.split('@')])"
May 18 '06 #8

Andrew Robert wrote:
bruno at modulix wrote: [...]

<just-asking>
Is this really the solution ?
</just-asking>

[...]

Unfortunately there is a real need for this.

The MQSeries trigger monitor is single threaded.

Because of this, my program would absorb it until it completes.

The way to get around this would be to fork off and terminate the parent.

Unfortunately, Windows appears to be somewhat stubborn about it.

Creating a subprocess does not alleviate the need to get the originating
process out of the trigger monitor.


I have my doubts that this will solve the problem.

You have a process that communicates with another, single-threaded,
piece of software. If you fork of a sub-process, then you have another
process communicating (and hogging up) this single-threaded piece of
software.

Well, if your original program is long-running, your sub-process is
short-running, and you cannot 'disconnect' from the MQ Monitor other
than by terminating a process, yes then I can see how using a
subprocess could solve your problem... But I don't know why the
SubProcess module doesn't do what you want.

Cheers,

--Tim

May 18 '06 #9
Andrew Robert wrote:
In this situation, it is possible for a process(my python program) to
monopolize and block other processes from being triggered.

Ideally, this needs to be avoided through the use of a fork.


Another option would be to write the incoming messages to your own queue
(an on-disk directory perhaps) and have the triggered program return
after doing that. Then you can have a separate, long-running program
process the messages.
--
Benji York
May 19 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: RL | last post by:
Hello Perl gurus, 1. I have a web page where I can push a button (dospawn.html). 2. This button calls a CGI script (spawnboss.cgi) 3. spawnboss.cgi calls a forking perl script (forkme.pl) 4....
3
by: felixfix | last post by:
Hi all, I am just wondering if something is wrong with my program. What it bascially does is to output a fibonacci sequence base on the command-line output. If I give a 5, it will generate the...
1
by: Doug Wyatt | last post by:
So I'll preface this with the fact that I'm a UNIX developer by training and have just recently gotten in to C# development on Windows. I'm basically running in to a problem whereby I suspect...
5
by: JDS | last post by:
Hi. I have installed the PCNTL functions on my PHP enabled webserver in the interest of being able to fork a process into the background so I can do some heavy processing but return control of the...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.