aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/py/scripts/threads.py
blob: b02991014e9db8c394430ea82144302c2a596a9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# py/pyext - python script objects for PD and MaxMSP
#
# Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net)
# For information on usage and redistribution, and for a DISCLAIMER OF ALL
# WARRANTIES, see the file, "license.txt," in this distribution.  
#

"""This is an example script for the py/pyext object's threading functionality.

For threading support pyext exposes several function and variables

- _detach([0/1]): by enabling thread detaching, threads will run in their own threads
- _priority(prio+-): you can raise or lower the priority of the current thread
- _stop({wait time in ms}): stop all running threads (you can additionally specify a wait time in ms)
- _shouldexit: this is a flag which indicates that the running thread should terminate

"""

try:
	import pyext
except:
	print "ERROR: This script must be loaded by the PD/Max pyext external"

from time import sleep

#################################################################

class ex1(pyext._class):
	"""This is a simple class with one method looping over time."""

	# number of inlets and outlets
	_inlets=2
	_outlets=2

	sltime=0.1 # sleep time
	loops=20   # loops to iterate

	# method for bang to any inlet
	def bang_(self,n):
		for i in xrange(self.loops):
			# if _shouldexit is true, the thread ought to stop
			if self._shouldexit: 
				print "BREAK"
				break

			self._outlet(n,i)
			sleep(self.sltime)