Example #1
0
def _init_worker():
    """
    Initializer for pooled processes.
    """

    # Try to lower the CPU usage priority as much as possible.
    try:
        import posix
        posix.nice(99)
    except Exception:
        pass
Example #2
0
	def operate(self,**kwargs):
		self.runningThreads+=1
		r, w = os.pipe()
		pid = os.fork()
		if pid:	# PARENT
			os.close(w)

			tmpParam = kwargs[self.parameter]
			r = os.fdopen(r, 'rb')
			try: tmpResult = cPickle.load(r)
			except:
				try: posix.kill(pid, -1)				# Kill the child
				except: pass

				if self.verbose: self.write("An error occured in job "+str(pid))	# Tell the reader

				self.jobs.append(kwargs[self.parameter])		# Append the job to be done later
				self.runningThreads -= 1			# Tell your master that you've one it
				self.sigPause.set()
				return
			os.waitpid(pid, 0)

		else:	# CHILD
			posix.nice(self.nice)
			os.close(r)
			w = os.fdopen(w, 'wb')
			cPickle.dump(self.function(**kwargs), w, 2)
			w.close()
			sys.exit(0)


		self.writeLock.acquire()
		self.operate_return(tmpParam, tmpResult)
		self.runningThreads -= 1
		self.sigPause.set()
		self.writeLock.release()