Skip to content

Instantly share code, notes, and snippets.

@sjchoi86
Created April 19, 2018 13:16
Show Gist options
  • Save sjchoi86/cc6ce4fa490d991891083e440d214be8 to your computer and use it in GitHub Desktop.
Save sjchoi86/cc6ce4fa490d991891083e440d214be8 to your computer and use it in GitHub Desktop.
basic_codes/demo_useThread.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# Basic Multiprocess Usage"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "import time\nfrom threading import Thread\nfrom multiprocessing import Process,Manager\nprint (\"Package loaded.\")",
"execution_count": 1,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Package loaded.\n"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Define Class with Process"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "class worker_class(Process):\n def __init__(self,_idx=0,_name='worker',_FLAG='',_period=1,_maxTick=5,_VERBOSE=True):\n Process.__init__(self)\n # Initialize class\n self.idx = _idx\n self.name = _name\n self.FLAG = _FLAG\n self.tick = 0\n self.period = _period\n self.maxTick = _maxTick\n self.VERBOSE = _VERBOSE\n # Initialize Process \n self.setName = 'T_'+self.name\n self.args = (self.FLAG,)\n self.daemon = True # Make sure that each child is killed when the parent is dead. (?!)\n # Print\n if self.VERBOSE:\n print (\"[%s] Instantiated.\"%(self.name))\n def run(self):\n self.tick = 0 # Re-init tick \n print (\"Starting [%s]\"%(self.name))\n time.sleep(1e-1)\n while (self.tick<self.maxTick) & (self.FLAG.value):\n print (\"[%d] Name:[%s] tick:[%d/%d]\"\n %(self.idx,self.name,self.tick,self.maxTick))\n self.tick += 1\n time.sleep(self.period) # Pause\n print (\"[%s] Done.\"%(self.name))\nprint (\"Class defined.\")",
"execution_count": 2,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Class defined.\n"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Instantiate Workers"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "nWorker = 2\nFLAGS = ['']*nWorker\nWORKERS = ['']*nWorker\nfor i in range(nWorker):\n FLAGS[i] = Manager().Value('d',1)\n WORKERS[i] = worker_class(_idx=i,_name='Worker_%02d'%(i)\n ,_FLAG=FLAGS[i],_period=1.0,_maxTick=10)",
"execution_count": 3,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "[Worker_00] Instantiated.\n[Worker_01] Instantiated.\n"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Start Workers"
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "for i in range(nWorker):\n WORKERS[i].start(); # Start process\n\ntime.sleep(2)\nFLAGS[0].value = 0 # Stop worker 1 after 2 sec \ntime.sleep(2)\nFLAGS[1].value = 0 # Stop worker 1 after 2 sec ",
"execution_count": 4,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Starting [Worker_00]\nStarting [Worker_01]\n[0] Name:[Worker_00] tick:[0/10]\n[1] Name:[Worker_01] tick:[0/10]\n[0] Name:[Worker_00] tick:[1/10]\n[1] Name:[Worker_01] tick:[1/10]\n[Worker_00] Done.\n[1] Name:[Worker_01] tick:[2/10]\n[1] Name:[Worker_01] tick:[3/10]\n[Worker_01] Done.\n"
}
]
},
{
"metadata": {
"trusted": false
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"gist": {
"id": "",
"data": {
"description": "basic_codes/demo_useThread.ipynb",
"public": true
}
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.6.5",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment